編程時,我經常打開和關閉文件。我了解打開文件時,檢查錯誤以查看它是否確實打開非常重要。我不知道一個實例,但關閉文件時會出現問題(除非打開文件確實出錯并且未選中)。我目前正在 go 中編程,如果需要,該函數可以os在包下返回錯誤。我知道在 C++ 中這也是可能的。.Close()最后,我的問題是嘗試關閉文件時會導致錯誤的情況是什么?
2 回答

慕村9548890
TA貢獻1884條經驗 獲得超4個贊
是的。關閉文件可能會導致錯誤/失敗。例如,請參閱close(3)
可以返回的錯誤 - http://linux.die.net/man/3/close - 文件系統損壞之類的東西是可能的原因之一。
通常,除了記錄錯誤并知道您的數據可能被搞砸(取決于錯誤)之外,您實際上無能為力 - 您很少可以“修復它”,除非您可能會在其他地方重新寫入數據仍然有它等。
您使用的語言(Go、C++ 等)無關緊要。如果文件系統已滿、損壞或有人從物理上撕掉了硬盤驅動器,那么您的編程語言就無法拯救您,并且關閉將失敗,任何人都在猜測您的數據是否安全地存儲在某個地方。

www說
TA貢獻1775條經驗 獲得超8個贊
在操作系統級別,關閉文件時也可能出現問題,尤其是當您寫入文件時(即緩沖問題、磁盤空間不足、媒體刪除等)。
C++fstream
有一個void close()
不返回任何內容的函數。原則是一旦你調用了close,無論是否有錯誤,你都不能再使用流。但是,當發生關閉錯誤時,會設置失敗位,以便可以檢測到它,并且可以通過通常的方式檢索錯誤代碼。
Cfclose()
返回一個int
顯示是否有錯誤。如果您想知道它失敗的原因,您必須獲取并分析errno
錯誤代碼。它不像 void 函數那樣不言自明,但在這里,無論是否有錯誤,在結束調用后您都不能再使用 FILE* 了。
- 2 回答
- 0 關注
- 213 瀏覽
添加回答
舉報
0/150
提交
取消