1

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

我搜索了类似的主题,但找不到大型二进制文件的答案。考虑到我有非常大的二进制文件(如每个 ~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;
}
4

1 回答 1

2

您可以使用std::fopen, std::fread,std::fwritestd::fclose, 所有这些都是标准 C++ 库的一部分(#include <cstdio>非常便携),只要您不使用"t"说明符 to就不会弄乱二进制数据fopen

如果您选择适当的缓冲区大小(例如 1 MB),它甚至会相当快,从而使您进入顺序 I/O 性能的领域。

于 2012-10-08T03:56:43.523 回答