2012-05-31 23 views
1

以下行:QStreamData:盤如何檢測是充滿writeRawData

qDebug() << "Result writeData : " << stream.writeRawData((const char *)&header, sizeof(header_t)); 

總是返回即使我的磁盤已滿正值。爲什麼?我需要檢測writeRawData何時因完整磁盤而失敗。

因爲它似乎永遠不會失敗,我的文件被損壞,因爲writeRawData不能寫滿磁盤!

所以問題:如何與QStreamData(!順便說一句,狀態總是返回OK)

謝謝

回答

1

你應該檢查寫入的字節數是你問的檢測磁盤已滿的問題。

除此之外,在這裏沒有什麼可以做的。底層的操作系統/文件系統可以「撒謊」,也就是說寫入已經完成(保存在緩存中),但後來發現它沒有更多空間來擴展該文件。在底層文件描述符關閉或強制進行同步之前,錯誤可能不會被報告給應用程序。

調用flush()並檢查其結果可能有幫助。如果這還不夠,您可能需要至少使用系統特定的調用來處理打開/關閉自己的文件。