我有GZIP歸檔文件,裏面有兩個文件,裏面裝滿了tar實用程序。我需要將它們都提取到內存中。所以我需要得到兩個byte
陣列。但所有使用GZIPInputStream
的例子都只是讀取字節並將它們保存到輸出流中,因此我不知道如何獲得兩個byte[]
數組。從tar.gz文件提取兩個文件到內存中
回答
libarchive應該做你所需要的。下面是從他們的主頁上描述什麼是摘錄:
libarchive
多格式存檔和壓縮庫
源分佈包括libarchive庫, bsdtar和bsdcpio命令行程序,完整測試套件和文檔:
穩定版本:libarchive-3.1.2.tar.gzlibarchive-3.1.2.zip(自2013年1月13日)
舊版本:libarchive-2.8.5.zip(自2011年9月3日)
的libarchive庫功能:
支持多種歸檔和壓縮格式。
強大的自動格式檢測,包括歸檔/壓縮組合,如tar.gz.
用於高性能的零拷貝內部架構。
流式架構消除了歸檔大小的所有限制,入口大小的限制取決於特定的格式。
當程序靜態鏈接時,仔細考慮代碼以減少膨脹。
越來越多的測試套件驗證新端口的正確性。
作品在大多數類POSIX系統(包括FreeBSD,Linux和Solaris等)
支持Windows,包括Cygwin的,MinGW的,和Visual Studio。
的
bsdtar
bscpio
和命令行實用程序是與其它焦油和cpio實現特徵 - 和性能競爭:
讀取的多種格式,包括焦油,PAX ,cpio,zip,xar,lha,ar,cab,mtree,rar和ISO映像。
寫入tar,pax,cpio,zip,xar,ar,ISO,mtree和shar歸檔。
自動處理使用gzip,bzip2,lzip,xz,lzma或compress壓縮的壓縮文件。
獨特的格式轉換功能。
雖然這個鏈接可能回答這個問題,但最好在這裏包含答案的基本部分,並提供參考鏈接。如果鏈接頁面更改,則僅鏈接答案可能會失效。 –
如果我在使用libarchive的時候提供「基本部分」,並且鏈接消失,那麼這些基本部分也變得沒用。我瞭解鏈接的波動性,但在鏈接消失的情況下,我看不出如何改進答案。 –
這是不正確的。鏈接可以改變。斷開的鏈接並不表示該產品不再存在或變得無用。別擔心,我繼續編輯您的答案,並在主頁的所有重要部分添加解釋,以向未來訪問者解釋libarchive是什麼。 –
- 1. 如何存檔和提取.tar.gz文件
- 2. 不能提取tar.gz文件
- 3. 從tar.gz文件讀取xml
- 4. 在perl中提取tar.gz文件
- 5. 如何提取ubuntu中的.tar.gz文件
- 6. 提取tar.gz文件在Java中
- 7. 使用Perl腳本提取tar.gz文件
- 8. 如何在UNIX上提取.tar.gz文件
- 9. 將提取的tar.gz複製到單個文件
- 10. Ubuntu的提取多個.tar.gz文件到新的目錄
- 11. 從Spark中的* .tar.gz壓縮文件中讀取HDF5文件
- 12. linux命令組合兩個tar.gz文件
- 13. 從文本文件中提取內容
- 14. 使用Matlab從.tar.gz中提取txt文件
- 15. 從Spark中的tar.gz存檔中讀取文件
- 16. 從ear文件中存在的war文件中提取文件
- 17. 提取從兩個文件中的R相同內容的行
- 18. 在java(JSP)中提取一個.tar.gz文件
- 19. 將.tar.gz文件複製到文件夾
- 20. 從zip壓縮文件中提取壓縮文件而不將整個文件加載到內存中
- 21. Asp .NET從tar.gz存檔中讀取文件
- 22. 如何從遠程存檔文件中提取單個文件?
- 23. 批從.tar.gz文件在CentOS
- 24. 提取從tar.gz的文件,不接觸磁盤
- 25. 從多個txt文件中提取內容,然後根據文件夾保存文件。文件名
- 26. 如何從tar.gz存檔中刪除單個文件
- 27. 從CSV文件中提取數據到一個excel文件
- 28. 從文件中提取列到另一個文件
- 29. 從不同的csv文件中提取列到一個文件
- 30. VB.NET - 在內存中下載zip文件並從內存中提取文件到磁盤
「我有GZIP存檔,裏面有兩個文件。」 GZIP不能這樣工作。它沒有多個文件的概念。這只是壓縮數據。 –
@JonSkeet我的錯誤,我已經更新了這個問題。 – Lingviston
那麼你的意思是你已經得到了一個tar.gz文件或一個tgz文件?如果是這樣,你需要從焦油部分中分離出提取的gzip部分。當你解壓縮gzip文件時,你會得到一個tar文件,然後你可以從中得到這兩個文件。 –