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

最后,bw.BaseStream.Position等于 192152(不是 192137!)。文件大小为 192 104 字节。这怎么可能?

4

1 回答 1

1

BinaryWriter 在将数据写入底层 Stream 之前缓冲数据。

如果要写入 192137 字节,请将 192137 字节写入 BinaryWriter,而不是等到 192137 字节写入底层 Stream:

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

经验法则:使用 Stream 或 BinaryWriter,但不要同时使用它们。(即,如果您使用 BinaryWriter,请不要访问 BaseStream。)

于 2013-02-16T14:44:40.760 回答