定期写入文件块

Writing to file in chunks periodically

目前我正在将一个巨大的 QByteArray 写入一个文件 之后 用数据填充它:

QByteArray my_ba;

// Fill out my_ba in some loops

path = "/some/path.data";
QFile file(path);
file.open(QIODevice::WriteOnly);
file.write(my_ba);
file.close();

由于我的QByteArray可以达到GBs,为了减少内存使用,我需要将我的QByteArray写入文件.

Qt 有方便的工具吗?有什么标准做法吗?

我最终 定期 分块写入文件,如下所示:

for(unsigned int j = 0; j < Count; ++j) {

    // Fill out QByteArray my_ba in every single iteration of the loop

    // ...

    // But write my_ba only periodically and then clear it!
    // period is picked in such a way that writing to file will be done for every 1MB of data
    if( j % period == 0){
            if(file){
                file->write(my_ba);
                file->flush();
                my_ba.clear();
            }
        }

    // ...
}

我在将其内容写入文件后通过执行 my_ba.clear() 定期清除我的 QByteArray,因此我的 QByteArray 永远不会变大并且它的 内存消耗 因此减少了。