我有一个 .taz 文件,我需要解压缩并从中获取内容。到目前为止,我已经做了一些研究,发现了一个提供此功能的商业图书馆(这里是链接)
是否有任何免费/开源方法可用于使用 Java 从 .taz 文件中提取内容?
我有一个 .taz 文件,我需要解压缩并从中获取内容。到目前为止,我已经做了一些研究,发现了一个提供此功能的商业图书馆(这里是链接)
是否有任何免费/开源方法可用于使用 Java 从 .taz 文件中提取内容?
你可以试试apache compress,我之前用过一段时间(用于另一个压缩),但它可以同时处理 zip 和 tar (不完全确定什么是 TAZ)
如果可以接受,我建议您使用控制台工具来压缩/解压缩数据。几乎所有的 java lib 都有很多不好的方面:较低的性能,使用更多的内存和更多的 CPU。我在解压缩几个大文件时遇到了问题(要重现,文件应该超过 2 GB)
我使用下一个代码解压缩压缩文件列表。
public int extractFiles(final String zipFile, final File folder, final String[] neededFiles) throws IOException {
try {
final String filesString = StringUtils.join(neededFiles, " ");
final String command = "/bin/tar -xvf " + zipFile + " " + filesString;
logger.info("Start unzipping: {} into the folder {}", command, folder.getPath());
final Runtime r = Runtime.getRuntime();
final Process p = r.exec(command, null, folder);
logger.debug("process started");
final int returnCode = p.waitFor();
if (logger.isWarnEnabled()) {
final BufferedReader is = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while ((line = is.readLine()) != null) {
logger.warn(line);
}
final BufferedReader is2 = new BufferedReader(new InputStreamReader(p.getErrorStream()));
while ((line = is2.readLine()) != null) {
logger.warn(line);
}
}
logger.info("File {} unzipped [code = {}]", zipFile, returnCode);
return returnCode;
} catch (final InterruptedException e) {
logger.error("Error", e);
return -1;
}
}
此选项速度更快,并且不需要大量内存。当然,这个方法平台依赖,但适用于所有(几乎所有)Unix系统。
PS实际上大多数代码只是记录:)。