QStreamData:如何使用writeRawData检测磁盘已满

时间:2012-05-31 19:07:58

标签: c++ qt

以下行:

qDebug() << "Result writeData : " << stream.writeRawData((const char *)&header, sizeof(header_t));
即使我的磁盘已满,

也始终返回正值。为什么?我需要检测writeRawData因完整磁盘而失败的时间。

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

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

谢谢,

1 个答案:

答案 0 :(得分:1)

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

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

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