我已经成功地从*.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