2013-11-23 62 views
0

我試圖壓縮的文本文件QT:無法打開壓縮文件

QFile inFile("d:\\build\\Directories\\Debug\\files\\developer.txt"); 
bool open_file_result = inFile.open(QIODevice::ReadOnly); 
QByteArray ba = inFile.readAll(); 

QFile file("d:\\build\\Directories\\Debug\\files\\developer.gz"); 
bool open_zip_result = file.open(QIODevice::WriteOnly); 
QDataStream out(&file); 
out << qCompress(ba); 

file.close(); 

open_file_resultopen_zip_result都是true。我也可以看到zip文件(它也有一個大小,例如50KB),但我無法打開它。我收到以下錯誤:

The archive is either in unknown format or damaged.

我在做什麼錯?如果你有更好的/另一種方式來壓縮文本文件,請告訴我!

+0

我不知道'QFile'任何特別,但我知道Windows需要你在'binary'模式下打開這樣的事情。有'QFile'這樣做的方法嗎? –

+0

大概'qCompress'只是壓縮指定的數據,不寫了GZ文件頭。你應該打開任何gz文件並檢查它的頭部是否有一些「魔法」數據。並與你生成的一個進行比較。 – eraxillan

回答

0

還有就是Zip壓縮算法和郵編容器之間的差。你混淆了兩者。

你需要做一些研究到壓縮容器格式,這將有助於你找到並提取郵編容器內的壓縮文件。獲得該文件後,只能將qUncompress應用於該文件。

嘗試尋找在QuaZip,這是已被用於此目的編寫的庫。