|
分類:[VB.NET/VB2005 以降]
バイナリファイルから指定の文字を検索して文字を入換えてファイル書き出ししたい。 現在バイナリエディタで、その文字を検索して、書換後ファイル書き出ししています。 その処理をVB.NETでやりたいと考えていますが、バイナリファイルを扱った事が無い為に、 どの様なコマンドを書いていいかも分かりません。 下のコードを入手して、ファイルコピーが出来る事は確認出来ました。 readSize = src.Read(buf, 0, BUFSIZE) 部分の bufを検索して、合致すれば、入換て書き出せばいいと思ってます。 検索方法と入換方がわかりません。
やりたいのは、ABC(41 42 43)の文字を検索して(ファイルには一箇所しか無い物とします。)、 DATA(44 41 54 41)に書換えてファイル出力する。 と言う事です。ファイルサイズは大きくはありません。 バッファのサイズを Dim BUFSIZE As Integer = 2048で指定出来ますが。 これを数倍にして、一回で読み込める物とします。(数回に分けられると、継ぎ目が発生して なんか大変そうな感じしますので。) すみませんが、検索、入換方法の概略だけでも宜しくお願い致します。
Sub main_x(ByVal args As String()) Dim srcName As String = args(0) ' コピー元のファイル名 Dim destName As String = args(1) ' コピー先のファイル名 Dim BUFSIZE As Integer = 2048 '2048 ' 1度に処理するサイズ Dim buf(BUFSIZE) As Byte ' 読み込み用バッファ Dim ZEROARRAY(BUFSIZE) As Byte ' 0埋め用 Dim readSize As Integer ' Readメソッドで読み込んだバイト数 Using src As New FileStream( _ srcName, FileMode.Open, FileAccess.Read) Using dest As New FileStream( _ destName, FileMode.Create, FileAccess.Write) While True readSize = src.Read(buf, 0, BUFSIZE) ' 読み込み If readSize = 0 Then Exit While ' コピー完了 End If dest.Write(buf, 0, readSize) ' 書き込み End While End Using End Using End Sub
|