|
分類:[.NET 全般]
例えば、バイナリファイルの2000byte〜2003byteのみを別のデータに書き換えたいとします。
VBAだと
dim hairetu() as byte
redim hairetu(3)
Open filepath For Binary As intFileNumber
Put intFileNumber, 2000, hairetu
Close intFileNumber '必ず、最後にcloseする必要がある
のようにすることでできました。
同じ事をVB.NETでもやりたいのですが
dim hairetu(3) as byte
Using stream As IO.Stream = New FileStream(filepath, FileMode.Create)
Using writer As New BinaryWriter(stream)
stream.Seek(2000, SeekOrigin.Begin)
writer.Write(hairetu)
End Using
End Using
とやると、2004byte以降のデータが消えてしまいます。
FileMode.CreateをAppendにしてもみましたが
これだと、ファイルの最後からの書き込みになってしまいます。
BinaryReaderを使って、最後の部分だけ書き込むという方法ならできると思いますが
大きなファイルサイズだとメモリを多く消費することや
速度の面から考えても、
一部データだけ書き換える方法を探しています。
どのようにすれば良いでしょうか?
|