定期写入文件块
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
永远不会变大并且它的 内存消耗 因此减少了。
目前我正在将一个巨大的 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
永远不会变大并且它的 内存消耗 因此减少了。