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

如何从jar文件中访问资源文件夹中的文件夹?

郝玄天
2023-03-14

我有一个资源文件夹/包在我的项目的根,我"不"想要加载某个文件。如果我想加载某个文件,我会使用class.getResourceAsStream,我会没事的!!我实际上想做的是在资源文件夹中加载一个“文件夹”,循环该文件夹中的文件,并获得每个文件的流,并在内容中读取...假设在运行时之前没有确定文件名...那我该怎么办?有没有一种方法来获得一个文件夹中的文件列表在您的jar文件?请注意,带有资源的Jar文件与运行代码的jar文件相同...

共有3个答案

汪翰墨
2023-03-14

我知道这是很多年前的事了。但只是为了其他人遇到这个话题。您可以对目录路径使用getResourceAsStream()方法,输入流将具有该目录中的所有文件名。之后,可以使用每个文件名连接dir路径,并在循环中为每个文件调用getResourceAsStream。

鲁龙野
2023-03-14

尝试以下操作。
创建资源路径"

URL url = MyClass.class.getResource("resources/");
if (url == null) {
     // error - missing folder
} else {
    File dir = new File(url.toURI());
    for (File nextFile : dir.listFiles()) {
        // Do something with nextFile
    }
}

你也可以使用

URL url = MyClass.class.getResource("/com/abc/package/resources/");

焦苏燕
2023-03-14

最后,我找到了解决办法:

final String path = "sample/folder";
final File jarFile = new File(getClass().getProtectionDomain().getCodeSource().getLocation().getPath());

if(jarFile.isFile()) {  // Run with JAR file
    final JarFile jar = new JarFile(jarFile);
    final Enumeration<JarEntry> entries = jar.entries(); //gives ALL entries in jar
    while(entries.hasMoreElements()) {
        final String name = entries.nextElement().getName();
        if (name.startsWith(path + "/")) { //filter according to the path
            System.out.println(name);
        }
    }
    jar.close();
} else { // Run with IDE
    final URL url = Launcher.class.getResource("/" + path);
    if (url != null) {
        try {
            final File apps = new File(url.toURI());
            for (File app : apps.listFiles()) {
                System.out.println(app);
            }
        } catch (URISyntaxException ex) {
            // never happens
        }
    }
}

第二个块只是工作,当你在IDE上运行应用程序(不是用jar文件),如果你不喜欢,你可以删除它。

 类似资料:
  • 我正在从主类访问资源文件夹中的文件 我收到了这个错误: 我甚至打开了jar文件,remoteUnitsIdsInOldServer.txt文件就在那里,在类内部

  • 问题内容: 嗨,我已经将我的Java项目导出为可执行jar文件。在我的项目中,我正在访问包含一些数据的Excel文件。现在,当我尝试访问Excel文件时,我将无法访问它。 我的项目结构是: Java_Project_Folder -src_Folder -resources_Folder(包含Excel文件) 我正在像访问Excel文件 我尝试使用以下方式访问此文件: 但是我进入的是空异常。有什么

  • 问题内容: 我在项目的根目录中有一个资源文件夹/程序包,我“不想”加载某个文件。如果我想加载某个文件,我将使用class.getResourceAsStream,我会很好的!我实际上想要做的是在资源文件夹中加载一个“文件夹”,循环访问该文件夹中的文件,并获取每个文件的流,并读取内容…假设在运行时之前未确定文件名… 我该怎么办?有没有一种方法可以获取jar文件中“文件夹”中文件的列表?请注意,带有资

  • 但我进的是空异常。有什么问题,有人能帮忙吗?

  • 我正在尝试从一个java项目运行一个javascript文件。目前,我正在使用Nashorn java脚本引擎运行脚本,并使用maven编译和创建jar文件。 我得到警告: 我使用的是openjdk 11版本。这会是一个很大的问题吗?如果是这样的话,我要做的事情的最佳替代方案是什么? 我得到了一个FileNotFoundException 我有一个javascript文件脚本。js和两个java文