我想将一个二进制文件复制到另一个二进制文件。
我唯一的限制是复制必须通过QFile
进行(因为我已经重载了一些内部方法,我需要它们运行)。
我写了一个天真的方法来解决,但是是一个缓慢的作家:
QFile * write_to = new QFile("myfile.bin");
if(write_to->open(QFile::WriteOnly))
{
QFile read_from("my_outher_bin.bin");
if(read_from.open(QIODevice::ReadOnly))
{
QDataStream write_data(write_to);
QDataStream read_data(&read_from);
while(write_to->size() < read_from.size())
write_data << read_data;
}
}
最有效的方法是什么?
答案 0 :(得分:0)
一种简单安全的方法,使用STD库,std::ifstream是一个不错的选择:
std::ifstream src("file.txt", std::ios::binary);
std::ofstream dst("to_file.txt", std::ios::binary);
dst << src.rdbuf();
如果您使用的是C ++ 17,则可以使用&lt; filesystem&gt;扩展并使用fs::copy_file函数。
fs::copy_file("file.txt", "to_file.txt");