Large binary file copy with standard C++
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
Copy a file in an sane, safe and efficient way
我搜索过类似的主题,但我找不到大型二进制文件的答案。 考虑到我有非常大的二进制文件(每个大约10或大约100 GB),如何使用标准C ++(无POSIX函数)使用以下函数复制它们:
1 2 3 4 | bool copy(const std::string& oldName, const std::string& newName) { /* SOMETHING */ } |
编辑:
以下实施是否正常? (改编自评论中的链接)
1 2 3 4 5 6 7 8 9 10 11 | 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兆比特)来进入顺序I / O性能领域,它甚至会相当快。