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



以下行:

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

始终返回正值,即使我的磁盘已满。 为什么? 我需要检测 writeRawData 何时因磁盘已满而失败。

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

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

谢谢

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

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

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

最新更新