当前位置: 首页 > 知识库问答 >
问题:

用Apache Commons Compress解压缩tar文件

阙新觉
2023-03-14

我正在使用Apache Commons Compress创建tar归档并解压它们。我的问题从这个方法开始:

    private void decompressFile(File file) throws IOException {
    logger.info("Decompressing " + file.getName());

    BufferedOutputStream outputStream = null;
    TarArchiveInputStream tarInputStream = null;

    try {
        tarInputStream = new TarArchiveInputStream(
                new FileInputStream(file));

        TarArchiveEntry entry;
        while ((entry = tarInputStream.getNextTarEntry()) != null) {
            if (!entry.isDirectory()) {
                File compressedFile = entry.getFile();
                File tempFile = File.createTempFile(
                        compressedFile.getName(), "");

                byte[] buffer = new byte[BUFFER_MAX_SIZE];
                outputStream = new BufferedOutputStream(
                        new FileOutputStream(tempFile), BUFFER_MAX_SIZE);

                int count = 0;
                while ((count = tarInputStream.read(buffer, 0, BUFFER_MAX_SIZE)) != -1) {
                    outputStream.write(buffer, 0, count);
                }
            }

            deleteFile(file);
        }
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        if (outputStream != null) {
            outputStream.flush();
            outputStream.close();
        }
    }
}

共有1个答案

荆乐
2023-03-14

尝试使用getNextEntry()方法而不是getNextTarEntry()方法。

第二个方法返回一个TarArchiveEntry。大概这不是你想要的吧!

 类似资料:
  • 我的GCP云存储桶中有很多.tar文件。每个.tar文件都有多个图层。我想使用GCP数据流解压缩这些.tar文件,并将它们放回另一个GCP存储桶中。 我找到了Google提供的用于批量解压缩云存储文件的实用工具模板,但它不支持.tar文件扩展名。 也许我应该在上传到云端之前尝试解压文件,或者Beam中是否存在其他内容? 每个tar文件未经压缩大约有15 TB。

  • 我通常使用压缩,使用解压(由于习惯使用gzip)。 我最近得到了一个带有超线程的四核CPU,所以我有8个逻辑核,我注意到许多核在压缩/解压过程中没有使用。 有什么方法可以利用未使用的内核来加快速度吗?

  • 本文向大家介绍Linux下的tar压缩解压缩命令详解(小结),包括了Linux下的tar压缩解压缩命令详解(小结)的使用技巧和注意事项,需要的朋友参考一下 tar -c: 建立压缩档案 -x:解压 -t:查看内容 -r:向压缩归档文件末尾追加文件 -u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选

  • 我正在使用Julia的ZipFile包来提取和处理csv文件。没问题,但是当我遇到zip文件中的zip文件时,我也想处理它,但是遇到了一个错误。 Julia ZipFile文档如下:https://zipfilejl.readthedocs.io/en/latest/ 对如何做到这一点有什么想法吗?

  • 问题内容: 我想使用Java代码将文件压缩为zip,rar和7z格式。我也想在指定位置解压缩这些文件。谁能告诉我如何在Java中使用7-zip压缩和解压缩文件? 问题答案: 我用过:sevenzipjbinding.jar sevenzipjbinding-Allplatforms.jar 我现在可以使用这些jar解压缩文件。 尝试使用此链接进行解压缩:http : //sourceforge.n

  • 常用压缩包—解压—令整理 Linux 后缀为 .war 格式的文件(一般用在部署 Tomcat 项目的时候) 命令:unzip -oq XXXXXX.war -d ROOT 如果没有 ROOT 目录会自动创建 ROOT 目录。 Linux 后缀为 .tar.gz 格式的文件-解压 命令:tar zxvf XXXXXX.tar.gz Linux 后缀为 .bz2 格式的文件-解压 命令:bzip2