当前位置: 首页 > 知识库问答 >
问题:

使用标准C的大型二进制文件副本[副本]

韦叶秋
2023-03-14

可能的复制:
以理智、安全和高效的方式复制文件

我搜索过类似的主题,但找不到大型二进制文件的答案。考虑到我有非常大的二进制文件(比如每个约10或100 GB),如何使用标准C(无POSIX函数)使用以下函数复制它们:

bool copy(const std::string& oldName, const std::string& newName)
{
    /* SOMETHING */
}

编辑:下面的实现可以吗?(改编自评论中的链接)

bool copy(const std::string& oldName, const std::string& newName)
{
    bool ok = false;
    std::ifstream oldStream(oldName.c_str(), std::ios::binary);
    std::ofstream newStream(newName.c_str(), std::ios::binary);
    if (oldStream.is_open() && newStream.is_open()) {
        newStream << oldStream.rdbuf();
        ok = (oldStream.good() && newStream.good());
    }
    return ok;
}

共有1个答案

祖波光
2023-03-14

您可以使用std::fopenstd::freadstd::fwrite,以及std::fclose,所有这些都是标准C库的一部分(#包括

如果你选择一个合适的缓冲区大小(比如说1兆字节),让你进入顺序I/O性能领域,它甚至会相当快。

 类似资料:
  • 由于多值字段和维度使用报价,csv读取器读取此文件失败。我的函数(上面代码中的函数f)如果那个逗号在属于同一字段的两个数据之间,就用分号代替逗号,如果那个引号是维度的东西,就用'inch'代替。

  • 问题内容: 我读了很多文章,并且发现了很多不同的答案。 运行MYSQL 5.7,我有一个不需要存储的大型JSON对象,只需要存储即可。使用似乎效率低下- 我不需要验证它。在这种情况下最好的解决方案是什么?还是显而易见的选择,但是这两个之中最好的选择是什么? 二进制文件需要转换回文本(您最好怎么做?PHP还是在SQL查询期间?)仅需要返回文本。我非常感谢您的澄清… 问题答案: 什么是手动有关JSON

  • 我有一个1.5GB.dat文件需要作为pandas数据帧导入,我遇到了内存问题(8GB RAM)。如何将dat文件分解成块来执行分析?

  • 上传图像API需要二进制流。我尝试了新的及其方法,但它不起作用!二进制字符串和二进制流似乎不是一回事,所以我改变了我的方式,尝试了方法(因为我需要预览图像),现在我想知道: 1)如何使用JS将转换为二进制流? 当我使用时,响应如下(数据A):