[英]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.