ファイルをコピーしながら、バイナリデータを変更したいのですが、
以下のように単純にコピーするプログラムを作ってみたのですが、
エクスプローラーでコピーするよりも2倍くらい時間がかかります。
もっと、高速でバイナリコピーできる方法があれば教えてください。
Using streamIn As IO.Stream = New FileStream(filepath, FileMode.Open)
Using streamOut As IO.Stream = New FileStream(Get_BasePath(filepath) & "_2." & Get_Extension(filepath(i)), FileMode.Create)
Using Reader As New BinaryReader(streamIn)
Using writer As New BinaryWriter(streamOut)
For j = 1 To FileSize
Dim Data1 As Byte = Reader.ReadByte
writer.Write(Data1)
Next j
End Using
End Using
End Using
End Using
「バイナリデータを変更」というのがどういう処理なのかにもよりますが、
基本は「一気に読む」「一気に書く」です。
またバイト単位で扱うならBinaryReaderは必要ありません。
Dim buffer(65535) As Byte ' サイズは適当に調整する
Dim readSize As Integer
Do
readSize = streamIn.Read(buffer, 0, buffer.Length)
If readSize = 0 Then
Break
End If
' 必要に応じてここでbufferの中身を改変
streamOut.Write(buffer, 0, readSize)
Loop