2017-10-20 127 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

相關問題