1
BinaryWriter bw;
while(bw.BaseStream.Position < 192137)
bw.Write((byte) 0);

最後に、bw.BaseStream.Position192152 に等しくなります (192137 ではありません!)。ファイルサイズは 192 104 バイトです。これはどのように可能ですか?

4

1 に答える 1

1

BinaryWriter は、基になる Stream に書き込む前にデータをバッファリングします。

192137 バイトを書き込みたい場合は、基になる Stream に 192137 バイトが書き込まれるまで待つのではなく、BinaryWriter に 192137 バイトを書き込みます。

for (int i = 0; i < 192137; i++)
{
    bw.Write((byte) 0);
}

経験則: Stream または BinaryWriter を使用しますが、両方を使用しないでください。(つまり、BinaryWriter を使用する場合は、BaseStream にアクセスしないでください。)

于 2013-02-16T14:44:40.760 に答える