写入二进制文件块

Write binary file chunk

本文关键字:二进制文件      更新时间:2023-10-16

我有6GB的可用物理内存。我正在处理大数据,大小约为4GB。我刚刚意识到我不能以这种方式保存它,我曾经使用较小的数据(~1GB):

void save(char f_name[], int size, float data[])
{
    std::fstream f_bin(f_name, std::ios::out|std::ios::binary);
    f_bin.seekg(std::ios::beg);
    f_bin.write((char*)data, size*sizeof(float));
    f_bin.close();
}

因为它需要内存中的数据,并且需要相同数量的RAM才能将其写入HD。有没有办法将 4GB 写入(例如 1GB)块,这样它就不会超过 6GB 的限制?

void save(char f_name[], int size, float data[])
{
    std::fstream f_bin(f_name, std::ios::out|std::ios::binary);
    f_bin.seekp(std::ios::beg);
    while (size > 0)
    {
        int amount  = std::min(1000, size);
        f_bin.write((char*)data, amount * sizeof(float));
        data += amount;
        size -= amount;
    }
    f_bin.close();
}