2017-10-20 14 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;   
    } 
} 

이 작업을 수행하는 가장 효과적인 방법은 무엇입니까?

std::ifstream src("file.txt", std::ios::binary); 
std::ofstream dst("to_file.txt", std::ios::binary); 
dst << src.rdbuf(); 

당신이 C++ (17)를 사용하는 경우, 당신은 < filesystem> 확장 및 사용을 사용할 수 있습니다

+1

왜 [QFile :: copy] (http://doc.qt.io/qt-5/qfile.html#copy)가 필요하지 않습니까? 어떤 내부 방법을 변경 했습니까? – xander

+0

파일에 암호화 및 암호 해독을 추가하기 위해 읽기 및 쓰기 메소드를 변경합니다. – YOKO

+0

파일 크기는 무엇입니까? – aghilpro

답변

0

, 그것을 수행 STD 라이브러리를 사용하기 쉽고 안전한 방법은, std::ifstream 좋은 방법입니다 fs::copy_file 기능.

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

QFile에서 일부 내부 메서드가 오버로드되어이를 수행하는 방법을 찾고 있습니다. – PiedPiper

+0

무엇이 문제입니까? 이 기능을 계속 사용할 수 있습니다. 전체 파일 이름이나 경로에 액세스 할 수 있습니다. – mohabouje