Qt 使用QDataStream读取文件:使用缓冲区是否更快?怎么做?

Qt 使用QDataStream读取文件:使用缓冲区是否更快?怎么做?,qt,stream,buffer,qfile,Qt,Stream,Buffer,Qfile,我使用QDataStream从文件中读取部分二进制数据(例如100字节),然后对其进行处理。基本上QDataStream流(&file),其中文件是QFile 到目前为止一切正常。但我想,在一般情况下,如果不是从文件中逐个读取小数据部分,而是从缓冲区读取小数据部分,则处理速度会更快,缓冲区由具有较大数据量的文件提供。下面是我的问题: 在使用QDataStream时,这种缓冲是否已经在内部完成,这样手动实现的缓冲不会进一步加快处理速度?也就是说,Qt将从文件中读取超过100个字节的内容 如果不是,

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

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

  • 在使用QDataStream时,这种缓冲是否已经在内部完成,这样手动实现的缓冲不会进一步加快处理速度?也就是说,Qt将从文件中读取超过100个字节的内容

  • 如果不是,手动执行这种缓冲的最佳方式是什么?QBuffer

  • 感谢您的回答和经验


    Chris

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

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