我已經成功地從*.tgz
中提取了*.gz
,現在我不知道如何從*.tgz
實際提取最終文件。從* .gz擴展名中提取文件
有一些選項使用自定義軟件包,但這不是我的選擇,我只需要使用標準Java軟件包。
我試過的是使用相同的功能,我使用*.tgz
爲*.gz
,但它不起作用。
java.util.zip.ZipException:非gzip格式1.gz
這裏是提取*.tgz
文件的功能。
public String ExtractFile(String path) {
try {
File newFile = new File(this.getFullPathWithoutExtension(path) + ".gz");
GZIPInputStream gStream;
FileOutputStream outStream;
try (FileInputStream fileStream = new FileInputStream(path)) {
gStream = new GZIPInputStream(fileStream);
outStream = new FileOutputStream(newFile);
byte[] buf = new byte[1024];
int len;
while ((len = gStream.read(buf)) > 0) {
outStream.write(buf, 0, len);
}
}
gStream.close();
outStream.close();
newFile.createNewFile();
return newFile.getPath();
} catch (Exception e) {
System.out.print(e);
}
return null;
}
TL; DR; *.tgz
文件解壓到*.gz
文件,但*.gz
文件無法解壓。
當你說「我試過的是使用相同的函數,我使用* .tgz爲* .gz但它不起作用。」你的意思是你嘗試過兩次執行相同的解壓縮,有效嗎? – 2015-04-01 12:16:25
@JonSkeet是的,對於已經提取的文件,它的功能相同。因爲在文件瀏覽器上它說「GZip歸檔」。 – sed 2015-04-01 12:17:54