我已成功从*.gz
中提取*.tgz
,现在我不知道如何从*.tgz
实际提取最终文件。
有些选项使用自定义程序包,但这对我来说不是一个选项,我只需要使用标准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
个文件。
答案 0 :(得分:2)
.tgz
文件通常不会被解压缩到.gz
文件 - 它将被解压缩到.tar
文件。 (.gz
文件被gzip压缩; .tar
文件是包含多个文件的未压缩存档; .tgz
是.tar
文件,然后被gzip压缩 - 您已经“撤消了“gzipping。”
我不认为在Java的标准库中有任何东西可以处理tar文件 - 所以你要么必须重新访问“我不能使用任何不在标准库中的任何东西”的决定,或者自己重新实现。如果您决定这样做,请file format is easily available。