こんにちは
ネットにあったコードを利用してバイナリファイルの任意の場所を書き替えるコードを考えています。
FileStreamで読んで配列に入れて任意の場所を変更後書き換えるようにしたいのですが、
最後のfs.writeまで進んでも書き換わっていません。
binary.readerで読んでBinary.writeでないと書き換わらないのでしょうか?
512バイトをよんでbuf[0]を変更。
下記コード試行錯誤でぐちゃぐちゃになってます。Visualstudio2017 C#コンソールアプリで開発しています。
よろしくお願いします。。
static void Main(string[] args)
{
FileStream fs = new FileStream(@"d:\028mn2.dat", FileMode.Open, FileAccess.ReadWrite);
// BinaryReader fb = new BinaryReader(fs);
int fileSize = (int)fs.Length; // ファイルのサイズ //byte[] buf = new byte[fileSize]; // データ格納用配列 byte[] bufb = new byte[512]; byte[] buf = new byte[512]; // データ格納用配列 int readSize; // Readメソッドで読み込んだバイト数 int remain = fileSize; // 読み込むべき残りのバイト数 int bufPos = 0; // データ格納用配列内の追加位置 while (remain > 0) { // 1024Bytesずつ読み込む //readSize = fs.Read(buf, bufPos, Math.Min(1024, remain)); readSize = fs.Read(buf, 0, Math.Min(512, remain)); //fb.Read(buf, 0, Math.Min(512, remain)); Console.WriteLine(readSize); Console.WriteLine(bufPos); //Array.Clear(buf, 0, 512); Console.WriteLine(buf[0]); Console.WriteLine(buf[1]); Console.WriteLine(buf[2]); Console.WriteLine(buf[3]); Console.WriteLine(buf[4]); Console.WriteLine(buf[5]); Console.WriteLine(buf[6]); Console.WriteLine(buf[7]); Console.WriteLine(buf[8]); bufPos += readSize; remain -= readSize; buf[0] = 0x5b; bufb[0] = 0x5b; //Console.WriteLine(buf[1]); fs.Write(buf, 0, 512); //readSize = fs.Read(buf, 0, Math.Min(512, remain)); fs.Dispose(); Console.ReadKey();
回答2件
あなたの回答
tips
プレビュー