使用QDataStream从文件读取:缓冲区更快吗?怎么做?

时间:2013-06-27 09:12:57

标签: qt stream buffer qfile

我使用QDataStream从文件中读取部分(例如100个字节)的二进制数据,然后进行处理。基本上QDataStream stream(&file),文件是QFile。

到目前为止一切正常。但我想,一般情况下,当没有从文件中逐个读取小数据部分时,处理速度会更快,而是由具有更大数据量的文件提供的缓冲区。所以这是我的问题:

  1. 使用QDataStream时是否已在内部完成此类缓冲,以便手动实现的缓冲区不会进一步加快处理速度?也就是说,内部Qt将读取超过文件中的100个字节?

  2. 如果没有,手动执行此类缓冲的最佳方法是什么? Q缓冲器?

  3. 感谢您的回答和经验,

    克里斯

1 个答案:

答案 0 :(得分:4)

QDataStream本身不会执行任何缓冲(与QTextStream不同)。但QFile默认提供一些缓冲,除非您使用QIODevice::Unbuffered标志打开它。没有关于缓冲如何执行的信息,我不知道是否可以使用手动缓冲加速。但顺序阅读是一项常见任务,我认为它可以通过默认快速完成。

QBufferQByteArray提供IO接口。如果您的数据块是固定大小的,那么您可以确定文件的100字节片段可以使用QDataStream单独解析,而解决方案很简单:从QByteArray读取QFile并在{{1}上使用QDataStreamQByteArray将在内部使用)。但如果不是你的情况,你需要从缓冲区中删除已解析的数据并在需要时附加新数据,这是更复杂的任务。