在 C# 中,我使用 BinaryWriter,如下所示:
BinaryWriter br = new BinaryWriter(myPipe);
var bytes = new byte[5];
br.Write(bytes);
br.Flush();
Run Code Online (Sandbox Code Playgroud)
https://msdn.microsoft.com/de-de/library/system.io.binarywriter.flush(v=vs.110).aspx提到您应该使用刷新二进制编写器。
但是我注意到,一旦调用 br.Write,数据就已经发送,并且我认为不需要调用 br.Flush?
我想知道是否可以删除那 1 行(不必要的)代码:br.Flush()或者是否还有更多代码?
这完全取决于所使用的流。刷新流意味着任何尚未写入的缓冲数据都将在刷新期间写入。因此,如果您使用的流不缓冲任何数据,您将看不到任何差异。如果您不刷新流,它将在您关闭它时被刷新。
您提到的文档仅指出:
所有派生类都应重写 Flush 以确保所有缓冲数据都发送到流。
除非您显式调用 Flush 或 Close,否则刷新流不会刷新其底层编码器。将 AutoFlush 设置为 true 意味着数据将从缓冲区刷新到流,但编码器状态不会刷新。这允许编码器保持其状态(部分字符),以便它可以正确编码下一个字符块。这种情况会影响 UTF8 和 UTF7,其中某些字符只能在编码器接收到相邻字符后才能进行编码。
| 归档时间: |
|
| 查看次数: |
2617 次 |
| 最近记录: |