【发布时间】:2018-04-01 12:54:55
【问题描述】:
我想将一个二进制文件复制到另一个二进制文件。
我唯一的限制是必须通过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;
}
}
最有效的方法是什么?
【问题讨论】:
-
为什么不QFile::copy ?你改变了哪些内部方法?
-
我改变了读写方式,对文件添加加密和解密
-
文件大小是多少?
-
800mb 到 5gb(它可以先读到内存中(我在 64 位窗口上),但我认为这不是最有效的方式)
-
查看
QFile::copy的code 似乎仍然使用read和write方法,如果这不起作用,请复制代码并执行类似的操作(他们使用4k 字节缓冲区并以块的形式复制数据)。
标签: qt binary file-copying