首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >流可靠性

流可靠性
EN

Stack Overflow用户
提问于 2011-02-10 22:28:01
回答 2查看 199关注 0票数 1

我遇到了一些帖子,他们认为流不是一个可靠的数据结构,这意味着读/写操作可能不会在所有情况下都执行。

所以:

a)这一共识是否属实?

b)如果是,在哪些情况下读/写操作可能会失败?

我遇到的关于streams的共识声称,您应该循环执行读/写操作,直到完成:

代码语言:javascript
复制
var bytesRead = 0;
var _packet = new byte[8192];    
while ((bytesRead += file_reader.Read(_packet, bytesRead, _packet.Length - bytesRead)) < _packet.Length) ;
EN

回答 2

Stack Overflow用户

发布于 2011-02-10 22:33:48

嗯,这取决于你正在谈论的操作,以及你认为它是失败的那一层。

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

至于写操作,如果磁盘已满或其他类似问题,则写入文件可能会失败,但如果是写操作,则会返回一个异常。

如果您正在写入套接字或其他网络流,则不能保证即使Write方法返回时没有异常,另一端也能够接收到它,在此过程中可能会出现大量问题。

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

然而,他们与之交谈的媒介可以是。

票数 3
EN

Stack Overflow用户

发布于 2011-02-10 22:33:26

如果您遵循文档,在发生错误时捕获并采取相应的措施,我想您会发现流几乎是防弹的。有大量的代码在这种可靠性上进行了投资。

我们可以看到那些声称不是这样的人的链接吗?要么你误解了,要么他们是不正确的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4958312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档