QFile:如何有效地只读取从k到k + L的字节

4pi*_*ie0 3 c++ qt bytearray qfile qbytearray

我可以从QFile中读取从k到k + L的字节,将第一个整个文件读入QByteArray

if (!file.open(QIODevice::ReadOnly))
    //...
    QByteArray blob = file.readAll();
    QByteArray bytes = blob.mid( k, L);
Run Code Online (Sandbox Code Playgroud)

如何有效地从k到k + L只读取字节?

if (!file.open(QIODevice::ReadOnly))
    //...
    QByteArray bytes = bytesFromFile( file, k, L);
Run Code Online (Sandbox Code Playgroud)

小智 6

使用seek方法到达要开始阅读的文件中的位置.然后使用read方法从该点读取任意数量的字节.

即.

if (!file.open(QIODevice::ReadOnly)){
    file.seek(k);
    QByteArray bytes = file.read(L);
}
Run Code Online (Sandbox Code Playgroud)