在JAR文件中获取src文件夹之外的资源

问题描述 投票:0回答:2

我一直在寻找解决这个问题的几个小时,并找到了关于类似问题的多篇帖子,但我发现似乎没有做我正在尝试的确切事情。

我在res文件夹的同一级别有一个src文件夹,我用它来处理图像和文本文件。我只需执行以下操作即可轻松地在Eclipse中吐出文本文件:

    FileInputStream fis = new FileInputStream("res/misc/foo.txt");
    BufferedReader br = new BufferedReader(new InputStreamReader(fis));

    String line;
    while((line = br.readLine()) != null) {
        System.out.println(line);
    }

但是,当我将其打包在可运行的JAR文件中时,问题就出现了。我找到了多个线程指出这个:

Class.class.getResourceAsStream("/misc/foo.txt");

但是,这仅在资源与类相同的source文件夹中有效。事实上,当我将res文件夹移动到src时,它可以找到资源,但这不是我想要组织我的项目的方式。

有没有办法做到这一点我错过了,或者我应该更改我的文件夹结构?

java eclipse file
2个回答
0
投票

你应该能够通过以下方式获得路径:

String path = <YourClassName>.class.getProtectionDomain().getCodeSource().getLocation().getPath();

然后快速测试以检查目录是否存在:

File folder = new File(path);
File[] dirList = folder.listFiles();

for (File list : dirList) {
    if (list.isDirectory()) {
        System.out.println("Directory " + list.getName());
    }
}

0
投票

您将不得不更改您的结构,例如使res成为源文件夹(您可以拥有多个源文件夹)。它不是真正的源文件夹,而是将资源复制到构成生成的jar内容的同一个树中。

© www.soinside.com 2019 - 2024. All rights reserved.