使用Java解压缩.taz文件

时间:2013-06-13 09:24:32

标签: java compression

我有一个.taz文件,我需要解压缩并从中获取内容。 到目前为止,我已经完成了一些研究,发现了一个提供此功能的商业图书馆(Here is the link

我可以使用任何免费/开源方法从Java中提取.taz文件中的内容吗?

2 个答案:

答案 0 :(得分:1)

你可以尝试apache compress,我之前用过一段时间(用于另一次压缩),但它可以同时处理zip和tar(不完全确定什么是TAZ)

答案 1 :(得分:0)

我建议您使用控制台工具压缩/解压缩数据(如果可接受的话)。 几乎所有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系统。

P.S。实际上大多数代码只是记录日期:)。