以下行:
qDebug() << "Result writeData : " << stream.writeRawData((const char *)&header, sizeof(header_t));
即使我的磁盘已满,也始终返回正值。为什么?我需要检测writeRawData因完整磁盘而失败的时间。
因为它似乎永远不会失败,我的文件被破坏了,因为writeRawData无法在整个磁盘上写入!
所以问题:如何使用QStreamData检测磁盘已满问题(顺便说一句,状态总是返回OK!)
谢谢,
答案 0 :(得分:1)
您应该检查写入的字节数是否是您要求的。
除此之外,你无能为力。底层的操作系统/文件系统可以“撒谎”,即说写完了(保存在缓存中),但后来发现它没有更多空间来扩展该文件。在基础文件描述符关闭或强制同步之前,可能不会向应用程序报告错误。
调用flush()
并检查其结果可能有所帮助。如果这还不够,您可能需要至少使用系统特定的调用来处理打开/关闭文件。