使用QFile :: write的正确方法?

时间:2018-07-04 09:36:31

标签: c++ qt5

我需要向文件写入n个字节,我有QTemporaryFile, 我应该如何写这些字节?

我阅读了QIODevice::write文档:

  

qint64 QIODevice :: write(const char * data,qint64 maxSize)写在   从数据到设备的数据最大maxSize字节。返回数字   实际写入的字节数;如果发生错误,则为-1。

因此,由于没有受赠者,因此我似乎需要循环写入字节 它写入了所有字节,可能会在写入k个字节后返回控制权, 其中k <n

我可以从QDataStream创建TemporaryFile,但是QDataStream::writeRawData函数具有相同的限制:

  

int QDataStream :: writeRawData(const char * s,int len)写入len个字节   从s到流。返回实际写入的字节数,或者   -1表示错误。数据未编码。

因此Qt中没有函数可以精确地写入n个字节或返回错误?

1 个答案:

答案 0 :(得分:0)

在没有错误但写入的字节数少于n的情况下,您如何建议撤销写入某些字节?尤其是如果文件中已经有数据(之前的writes成功,或者因为您要追加)。

如果没有进行任何外部操作,任何进一步尝试写入未写入所有n字节的文件的操作也很可能失败或写入0。浮现在脑海的情况是磁盘可用空间的耗尽。