BinaryWriter bw;
while(bw.BaseStream.Position < 192137)
bw.Write((byte) 0);
最後に、bw.BaseStream.Position
192152 に等しくなります (192137 ではありません!)。ファイルサイズは 192 104 バイトです。これはどのように可能ですか?
BinaryWriter bw;
while(bw.BaseStream.Position < 192137)
bw.Write((byte) 0);
最後に、bw.BaseStream.Position
192152 に等しくなります (192137 ではありません!)。ファイルサイズは 192 104 バイトです。これはどのように可能ですか?
BinaryWriter は、基になる Stream に書き込む前にデータをバッファリングします。
192137 バイトを書き込みたい場合は、基になる Stream に 192137 バイトが書き込まれるまで待つのではなく、BinaryWriter に 192137 バイトを書き込みます。
for (int i = 0; i < 192137; i++)
{
bw.Write((byte) 0);
}
経験則: Stream または BinaryWriter を使用しますが、両方を使用しないでください。(つまり、BinaryWriter を使用する場合は、BaseStream にアクセスしないでください。)