2012-05-28 79 views
1

我正在寫一個服務器,它從客戶端接收一個zip文件,並解壓縮該文件。 當我收到zip文件時,我將它存儲到內存中。如何解壓縮已經加載到C中的內存中的zip文件?

我發現並嘗試了一些庫來上傳zip文件,比如zlib和minizip,但是所有這些文件都在磁盤上解壓縮文件,而不是從內存中解壓縮。

我不想將文件存儲到磁盤中並進行解壓縮,效率不高。

如何從內存中解壓文件? 我在Windows上編寫C和C++。

+0

請檢查回答這個問題的StackOverflow:在內存中提取存檔

例http://stackoverflow.com/questions/5303741/best-api-to-unzip-a-file-into -記憶。 –

+0

我不使用Qt,quazip似乎是Qt特有的。 – Celebi

回答

1

zlib支持內存中的inflate()和deflate()函數。你可以閱讀here

+4

但zlib不支持.zip格式。 – Celebi

+0

@Celebi:你是什麼意思,它不支持.zip格式?它被創建來處理zip格式。如果不起作用,請檢查標題。可能即使擴展名是.zip,實際使用的壓縮算法也是lzma或別的。 – LeleDumbo

+2

@LeleDumbo zlib的FAQ表示它不處理.zip檔案。 「請參閱zlib發行版中的目錄contrib/minizip」。但minizip處理文件中的.zip文件,而不是內存。 – Celebi

2

看看libarchive 它支持zip格式。

struct archive *a = archive_read_new(); 
archive_read_support_compression_gzip(a); 
archive_read_support_format_tar(a); 
r = archive_read_open_memory(a, buff, sizeof(buff)); 
相關問題