使用java在unix中解压缩.Z文件

使用java在unix中解压缩.Z文件,java,unix,compression,Java,Unix,Compression,我在unix box上有一个.Z文件。有没有办法从java调用unix解压命令?使用: 更新 根据文件要求,优先考虑 ProcessBuilder pb = new ProcessBuilder("uncompress", zFilePath); Process p = pb.start(); // p.waitFor(); 我还面临着解压缩.Z档案的需要,在互联网上查阅了一下,但没有找到比下面我的更好的答案。可以使用apachecommons压缩 FileInputStream fin =

我在unix box上有一个.Z文件。有没有办法从java调用unix解压命令?

使用:

更新

根据文件要求,优先考虑

ProcessBuilder pb = new ProcessBuilder("uncompress", zFilePath);
Process p = pb.start();
// p.waitFor();

我还面临着解压缩.Z档案的需要,在互联网上查阅了一下,但没有找到比下面我的更好的答案。可以使用apachecommons压缩

FileInputStream fin = new FileInputStream("archive.tar.Z");
BufferedInputStream in = new BufferedInputStream(fin);
FileOutputStream out = new FileOutputStream("archive.tar");
ZCompressorInputStream zIn = new ZCompressorInputStream(in);
final byte[] buffer = new byte[buffersize];
int n = 0;
while (-1 != (n = zIn.read(buffer))) {
   out.write(buffer, 0, n);
}
out.close();
zIn.close();


这真的很有效

我如何在windows box上执行此操作?@Rookie,与unix相同,假设
uncompress
PATH
环境变量中列出的目录。我建议使用java实现来执行此操作,而不是使用系统命令来解压缩文件,如@Marian的答案所示。这样,您就独立于运行应用程序的操作系统。您还可以避免任何与在主机系统上执行命令相关的安全问题。@MrSmith42,很高兴知道有一个库可以解压缩文件。当我发布这个答案时,我在java标准库中找不到功能。这就是为什么我建议使用
解压
可执行文件。@falsetru:我也会尝试同样的方法。幸运的是,玛丽安找到了那个图书馆,这对我真的很有帮助。即使我解码了存储在
字节[]
中的文件内容,而不是从文件系统读取文件。
FileInputStream fin = new FileInputStream("archive.tar.Z");
BufferedInputStream in = new BufferedInputStream(fin);
FileOutputStream out = new FileOutputStream("archive.tar");
ZCompressorInputStream zIn = new ZCompressorInputStream(in);
final byte[] buffer = new byte[buffersize];
int n = 0;
while (-1 != (n = zIn.read(buffer))) {
   out.write(buffer, 0, n);
}
out.close();
zIn.close();