如何使用jar cmmand列出jar里面的文件夹类似于jar -tvf会给出所有文件和目录?

时间:2016-03-02 07:09:23

标签: java jar

我的jar包含不同的文件夹,子文件夹和文件。 要列出和查看jar的内容,我可以使用jar -tvf jar_name。 是否有任何方式jar -tvf或类似的其他命令将只列出jar内容中的目录。

我看到jar有以下选项,但-t以外的其他选项,我找不到哪些可以帮助列出文件或文件夹。没有一次使用-t选项。

jar Options:
    -c  create new archive
    -t  list table of contents for archive
    -x  extract named (or all) files from archive
    -u  update existing archive
    -v  generate verbose output on standard output
    -f  specify archive file name
    -m  include manifest information from specified manifest file
    -e  specify application entry point for stand-alone application
        bundled into an executable jar file
    -0  store only; use no ZIP compression
    -M  do not create a manifest file for the entries
    -i  generate index information for the specified jar files
    -C  change to the specified directory and include the following file

我需要加载jar文件并在树结构中显示文件夹和文件。什么是实现这种逻辑的最佳方法。

2 个答案:

答案 0 :(得分:1)

Jar是一个zip文件。使用this answer。或者以编程方式answer1或此answer2

获取文件列表(see docs)并grep那些以“\”<结尾的行 - 您将获得目录列表。

答案 1 :(得分:1)

命令行(Linux);

jar tf JAR_PATH | grep ".*/$"

用于获取jar文件中目录的Java代码;

try {
    JarFile jarFile = new JarFile(JAR_PATH);
    Enumeration<JarEntry> paths = jarFile.entries();
    while (paths.hasMoreElements()) {
        JarEntry path = paths.nextElement();
        if (path.isDirectory()) {
            System.out.println(path.getName());
        }
    }
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}