簡體   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