- 題名: バイナリファイルの結合処理
- 日時: 2010/03/10 5:41:40
- ID: 26524
- この記事の返信元:
- (なし)
- この記事への返信:
- [26526] Re[1]: バイナリファイルの結合処理2010/03/10 11:10:17
- ツリーを表示
■No26524に返信(tstyleさんの記事) > 結合ターゲットファイル名は「test.001 test.002 test.003」のように拡張子が数字になっています。 もしも欠番があった場合、そこで結合処理を打ち切れば良いのでしょうか? > もう少しスマートなプログラムが作成出来そうなのですがアドバイス頂けると助かります。 最初に連番をカウントしているようですが、必ずしもその必要は無い気がします。 拡張子自体が 001〜999 固定なのであれば、こんな感じでいかがでしょう。 'Imports System.IO Using fs As New BinaryWriter(New FileStream("C:\join\test.ok", FileMode.Create)) For n As Integer = 1 To 999 Dim f As String = String.Format("C:\join\test.{0:000}", n) If Not System.IO.File.Exists(f) Then Exit For End If fs.Write(File.ReadAllBytes(f)) Next fs.Close() End Using
分類:[.NET]
開発環境:VB.NET2008
バイナリファイルを連続で連結するプログラムを作成しています。
MSDOSでの結合よりもファイルストリームを使用したプログラムの方が処理が早いようなのでファイルストリームで作成してみました。
結合ターゲットファイル名は「test.001 test.002 test.003」のように拡張子が数字になっています。
もう少しスマートなプログラムが作成出来そうなのですがアドバイス頂けると助かります。
結合ファイルのサイズが大きいので処理速度が速くなりそうなアドバイスも頂けると非常に助かります。
(ファイルも二桁以上になると今のプログラムでは処理出来ませんね・・・)
処理内容:指定したフォルダ内のファイル全てを順番に結合する。
--以下プログラム--
Shared Sub JOIN()
Dim intCnt As Integer
Dim strDIR As String = "C:\join"
For Each strFilePath As String In _
System.IO.Directory.GetFiles(strDIR, _
"*", IO.SearchOption.AllDirectories)
intCnt += 1
Next
Console.WriteLine(intCnt)
Dim count As Integer = 1
Do While count < intCnt + 1
'Dim data As Byte() = System.IO.File.ReadAllBytes("C:\join\test.00" & count)
'My.Computer.FileSystem.WriteAllBytes _
'("C:\join\join.ok", data, True)
Console.WriteLine(count)
count += 1
Loop
End Sub
--プログラム終了--
上記が初めてながら作ってみたお粗末なプログラムです。
宜しくお願い致します。