流澄清

时间:2017-07-24 10:01:55

标签: c# .net wpf uwp

我已经阅读了一些帖子,解释了什么流以及为什么需要它们。根据我的理解,流是一种将二进制数据(1100110110111100)从一个地方传输到另一个地方的方法。这让我想到了第一个问题:
这有点像或完全像串行通信数据传输吗? 所有流都只是串行通信吗?甚至Twitch.tv?

.NET提供的类采用二进制数据(1100010101011100110)并将其转换为可用格式,以便我们可以使用。有点像翻译器或解密器或编码器(其中任何术语都是最准确的)例如,StreamReader类将流的二进制数据转换为文本。

当我看到StorageFile类具有可以在不打开流的情况下操作文件的方法时,我感到有点困惑,例如CopyAsyncMoveAsync。在这样的情况下,不需要流,因为没有转换或转换为二进制,只是复制和删除。

我做多少了?

1 个答案:

答案 0 :(得分:1)

您不需要将二进制流传输的二进制数据视为“(1100110110111100)”形式。二进制流也可以称为“原始”流。关键不在于数据的二元性质,而是缺乏任何形式的转换。因此,由于所有内容都以二进制形式存储,因此这些流只是“按原样”传输,因此,以二进制形式传输。但是在处理二进制流时你很难看到任何二进制数,因为“二进制”不是重点。

当使用二进制流时,数据传输在最坏的情况下一次发生一个字节,更常见的是一次发送一个完整的缓冲区,一次几乎不会发生一个比特。

串行通信通常被抽象为二进制流,因为我们从不真正关心通过串行端口到达的单个位:通常,接收到足够的位来形成整个字节,然后将该字节视为到达来自我们选择代表串口的二进制流。

CopyMove是通常在内部使用二进制流的便捷方法。