在為dart.io檔案File.writeAsBytes
它談到了flush引數:
如果引數 flush 設定為 true,則寫入的資料將在回傳的 future 完成之前重繪 到檔案系統。
但我不知道“重繪 到檔案系統”是什么意思。
為什么知識淵博的人會選擇將其設定為 true?
為什么知識淵博的人會選擇將其設定為 false?
uj5u.com熱心網友回復:
由于 I/O 傳統上非常昂貴,因此在您的代碼和物理磁盤之間存在許多不同的緩沖區層,以嘗試批處理/合并 I/O 操作以提高效率并避免讓您的代碼等待 I/ O 操作完成。
“重繪 到檔案系統”意味著所有緩沖的寫入操作都已寫入檔案系統(這是物理磁盤之上的作業系統抽象)。例如,如果您在File.writeAsBytes 不重繪 的情況下呼叫,則嘗試從該檔案讀取的其他內容可能仍會看到舊內容,即使相應內容Future已完成。如果您使用重繪 執行寫入,則應保證在Future完成后對該檔案的讀取會看到新內容。
為什么知識淵博的人會選擇將其設定為 true?
如果您想確定地知道資料何時被寫入,您將選擇顯式重繪 。
為什么知識淵博的人會選擇將其設定為 false?
您可能不想重繪 每次寫入,因為這樣做會更慢。例如,如果您要進行許多小型寫入,最好在不重繪 的情況下發出所有寫入,然后可能在最后一次寫入時重繪 。
請注意,這是一個通用的作業系統概念,并不是 Dart 特有的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/373547.html
上一篇:從Json檔案加載資料
