我搜索了类似的主题,但我找不到大型二进制文件的答案。考虑到我有非常大的二进制文件(每个大约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;
}
答案 0 :(得分:2)
您可以使用std::fopen
,std::fread
,std::fwrite
和std::fclose
,所有这些都是标准C ++库(#include <cstdio>
的一部分,非常便携并且只要您不使用"t"
说明符fopen
,就不会弄乱二进制数据。
如果你选择一个合适的缓冲区大小(比如1兆比特)来进入顺序I / O性能领域,它甚至会相当快。