1

以下行:

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

即使我的磁盘已满,它也总是返回一个正值。为什么?我需要检测 writeRawData 何时因磁盘已满而失败。

因为它似乎永远不会失败,所以我的文件已损坏,因为 writeRawData 无法在整个磁盘上写入!

所以问题:如何使用 QStreamData 检测磁盘已满问题(顺便说一句,状态总是返回 OK!)

谢谢,

4

1 回答 1

1

您应该检查写入的字节数是否符合您的要求。

除此之外,您在那里无能为力。底层操作系统/文件系统可以“撒谎”,即说写入通过(保存在缓存中)但后来发现它没有更多空间来扩展该文件。在底层文件描述符关闭或强制同步之前,该错误可能不会报告给应用程序。

调用flush()并检查其结果可能会有所帮助。如果这还不够,您可能至少需要使用系统特定的调用自己处理打开/关闭文件。

于 2012-05-31T19:19:27.097 回答