繁体   English   中英

流可靠性

[英]stream reliability

我碰到过几篇文章,声称流不是可靠的数据结构,这意味着读/写操作可能不会在所有情况下都进行。

所以:

a)这个共识有什么道理吗?

b)如果是,那么读/写操作中的哪些情况可能会失败?

我遇到的关于流的共识声称您必须遍历读/写操作直到完成:

var bytesRead = 0;
var _packet = new byte[8192];    
while ((bytesRead += file_reader.Read(_packet, bytesRead, _packet.Length - bytesRead)) < _packet.Length) ;

好吧,这取决于您正在谈论什么操作,以及您认为这是失败的那一层。

例如,如果您尝试读取流的末尾(即,从仅包含100个字节的文件中读取1000个字节,或者从比文件末尾更近的位置(而不是1000个位置)中读取1000个字节),您将剩下更少的字节。 流读取方法返回它们实际设法读取的字节数,因此您应该检查该值。

至于写操作,如果磁盘已满或其他类似问题,则写入文件的操作可能会失败,但是在写操作的情况下,您将获得一个异常。

如果您正在写套接字或其他网络流,则不能保证即使Write方法无例外地返回,另一端也可以接收它,在此过程中可能会出现很多问题。

但是,为了减轻您的担心,流本身并不是不可靠的。

但是,他们可以与之对话。

如果您遵循文档,在出现错误时采取相应措施并采取相应措施,我认为您会发现流几乎是防弹的。 有大量的代码投入了这种可靠性。

我们可以看到指向其他主张者的链接吗? 您可能误会了,或者它们不正确。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM