C# BinaryWriter.BaseStream.Position错误? BinaryWriter-bw; 而(bw.BaseStream.Position
最后,C# BinaryWriter.BaseStream.Position错误? BinaryWriter-bw; 而(bw.BaseStream.Position,c#,C#,最后,bw.BaseStream.Position等于192152(不是192137!)。文件大小为192 104字节。这怎么可能呢?BinaryWriter在将数据写入底层流之前会对数据进行缓冲 如果要写入192137字节,请将192137字节写入BinaryWriter,而不是等待192137字节写入基础流: BinaryWriter bw; while(bw.BaseStream.Position < 192137) bw.Write((byte) 0); for(int i=0;
bw.BaseStream.Position
等于192152(不是192137!)。文件大小为192 104字节。这怎么可能呢?BinaryWriter在将数据写入底层流之前会对数据进行缓冲
如果要写入192137字节,请将192137字节写入BinaryWriter,而不是等待192137字节写入基础流:
BinaryWriter bw;
while(bw.BaseStream.Position < 192137)
bw.Write((byte) 0);
for(int i=0;i<192137;i++)
{
写入((字节)0);
}
经验法则:使用Stream或BinaryWriter,但不要同时使用它们。(即,如果使用BinaryWriter,则不要访问基本流。)BinaryWriter在将数据写入基础流之前缓冲数据 如果要写入192137字节,请将192137字节写入BinaryWriter,而不是等待192137字节写入基础流:
BinaryWriter bw;
while(bw.BaseStream.Position < 192137)
bw.Write((byte) 0);
for(int i=0;i<192137;i++)
{
写入((字节)0);
}
经验法则:使用Stream或BinaryWriter,但不要同时使用它们。(即,如果您使用BinaryWriter,请不要访问基流。)但我不想写入192137字节-我只想用零填充文件的其余部分,直到其长度达到192137字节。然后,您必须保留使用BinaryWriter已写入的字节数。或者不要使用BinaryWriter。然后
Flush()
,检查位置,计算剩余字节,并将该数量写入循环。不要检查每个字节后的位置。但我不想写入192137个字节-我只想用零填充文件的其余部分,直到其长度达到192137个字节。然后,您必须保留已使用BinaryWriter写入的字节数。或者不要使用BinaryWriter。然后Flush()
,检查位置,计算剩余字节,并将该数量写入循环。不要检查每个字节后的位置。是否为追加打开流?在开始写作之前,您是否检查了位置
?您是否关闭了
流?流是由文件.Create()生成的,并且位置小于以前的192137。它在最后确实是关闭的。流是否为append打开?在开始写作之前,您是否检查了位置
?您是否关闭了
流?流是由文件.Create()生成的,并且位置小于以前的192137。它最后确实关闭了。