【问题标题】:Java listFiles in directory in jarjar目录中的Java listFiles
【发布时间】:2018-07-06 14:43:18
【问题描述】:

有什么方法可以在打包到 jar 中的目录上使用listFiles()

假设我的资源目录中有一个目录,其中包含一些文本文件:texts/text1.txttexts/text2.txt

在这个 Java 程序中,我有一个类需要使用 listFiles() 来获取这些文件的列表。我会得到类似jar:file:/home/soupkitchen.jar/!text 的东西。我希望那是一个目录。有什么方法可以将其视为包含文件的java.io.File 目录?现在它似乎只被列为既不是文件也不是目录。

【问题讨论】:

    标签: java io


    【解决方案1】:

    没有。 java.io.File 只能用于列出真实目录。

    但是,您可以将其视为 java.nio.file.Path。

    总的来说,你有三个选择:

    1. Zip File System 的形式打开.jar 并使用Files.newDirectoryStreamFiles.list
    2. 遍历 .jar 文件中的所有条目,寻找匹配的名称。
    3. 在您的 .jar 中放置一个文本文件,其中包含目录中所有条目的名称,这样您就不必尝试列出它们。

    【讨论】:

    • 解决方案 2 的一个衬垫:new JarFile(new File(ThisClassName.class.getProtectionDomain().getCodeSource().getLocation().toURI())).entries()
    • @Torsten 这不是一个好主意,因为getCodeSource() can return null,并且不能保证file: URL 处存在.jar 文件。
    猜你喜欢
    • 2019-01-29
    • 2012-07-26
    • 2014-07-21
    • 2012-11-22
    • 1970-01-01
    • 2019-04-09
    • 2012-08-27
    • 2011-09-10
    相关资源
    最近更新 更多