Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# BinaryWriter.BaseStream.Position错误? BinaryWriter-bw; 而(bw.BaseStream.Position_C# - Fatal编程技术网

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。它最后确实关闭了。