QFile::write()
documentation说:
将最多
write()
字节的数据从数据写入设备。返回实际写入的字节数,如果发生错误,则返回-1。
(是的,这是整个文档 - 对Qt来说非常糟糕。)
这似乎意味着它不会写下您传递的所有数据。这是否意味着我应该在一个循环中调用{{1}},传入剩余的未写入数据,直到它完全写入它为止?
如果是这样,那似乎很痛苦。 Qt中有一些便利功能可以帮我吗?
答案 0 :(得分:2)
这似乎意味着它没有写下您传递的所有数据常见
常见,不,但我们可以在下面看到它。
Qt中有一些便利功能可以帮我吗?
如果您正在编写整个文件,更好的方法是使用QSaveFile,以“安全地写入文件”。
正如QSaveFile
的文档中所述:
QSaveFile会在写入时自动检测错误,例如完整分区情况,其中write()无法写入所有字节。
因此,完整分区将是一个可能导致QIODevice::write
无法将数据完全写入磁盘的实例。在写入磁盘故障,删除便携式存储设备或网络驱动器时,也可能只会写入部分数据。
答案 1 :(得分:0)
是的,这是整篇文档 - 对于Qt来说非常糟糕。
没有更多的东西。
这是否意味着我应该在循环中调用
write()
有些东西必须阻止write
完成,也许缺少的是它无缘无故地写maxBytes
。即我们没做错,但是因为write
无法继续。
如果删除导致其失败的条件,则可以再次调用它。在大多数情况下,重试没有意义 - 当write
无法写出你想要写的内容时,你就完成了,并将其作为错误处理。