Java 解压GZip压缩文件问题

JokerLi 发布于 2015/03/15 21:47
阅读 1K+
收藏 0
        用Commons Compress解压GZip压缩文件,获取TarArchiveEntry后isFile方法返回true,可是getFile方法却返回false,请问这是为什么呢?谢谢
package com.company;

import org.apache.commons.compress.archivers.tar.TarArchiveEntry;
import org.apache.commons.compress.archivers.tar.TarArchiveInputStream;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.zip.GZIPInputStream;

public class Main {
    public static void main(String[] args) {
        // write your code here
        String filename = "G:\\00.tar.gz";
        File file = new File(filename);
        unzip(file);
    }

    public static void unzip(File file) {
        try {
            TarArchiveInputStream tarIn = new TarArchiveInputStream(new GZIPInputStream(new BufferedInputStream(new FileInputStream(file))));
            TarArchiveEntry entry = null;
            while ((entry = tarIn.getNextTarEntry()) != null) {
                if (entry.isDirectory()) {//是目录
                    System.out.println("目录:" + entry.getName());
                } else if (entry.getName().endsWith("gz")) {
                    System.out.println("压缩文件:" + entry.getName());
                    System.out.println(entry.isFile());
                    System.out.println("压缩文件:" + entry.getFile());
                    System.out.println("压缩文件:" + entry.getSize());
                    //unzip(entry.getFile());
                } else {//文件
                    System.out.println("数据文件:" + entry.getName());
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}



以下是问题补充:

@JokerLi:补充一下,我想要达到的效果是直接读取压缩文件的内容,而不是解压后再读文件,同时考虑压缩包中还有压缩包的情况。 (2015/03/16 18:53)
加载中
0
小心有诈
小心有诈

我用的这个https://truezip.java.net/kick-start/index.html, 可以直接读取压缩文件里的文件, 就像读磁盘文件系统一样, 不过那是3年前了, 现在 api 不知道变了没有

JokerLi
JokerLi
谢谢,不过貌似不支持GZip吧
返回顶部
顶部