2017-10-20 144 views
1

我想复制一个二进制文件到另一个二进制文件。 我唯一的限制是复制必须通过QFile发生(因为我已经重载了一些内部方法,我需要它们运行)。 我写信给解决了天真的方式,但是一个缓慢的作家:什么是复制QT中的两个二进制文件的最佳方式

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;   
    } 
} 

什么是做到这一点的最有效方法是什么?

+1

为什么不[QFile :: copy](http://doc.qt.io/qt-5/qfile.html#copy)?你改变了什么内部方法? – xander

+0

我改变了读写方法在文件上添加加密和解密 – YOKO

+0

什么是文件大小? – aghilpro

回答

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,可以使用< filesystem>扩展和使用功能fs::copy_file

fs::copy_file("file.txt", "to_file.txt"); 
+1

他们正在寻找一种方式来使用QFile,因为它们超载了一些内部方法 – PiedPiper

+0

问题是什么?您仍然可以使用此功能,您可以访问完整的文件名或路径。 – mohabouje

相关问题