你如何从java 1.7中的资源文件夹中读取文本文件?

时间:2016-05-18 19:54:55

标签: java text-files

您好我一直在使用java 1.7中的项目并遇到了问题。我正在从文本文件中填充一些数组,这些文件存储在项目的资源文件夹中。

我遇到的问题是文件没有从它们读取,除非它们在包中,即使我尝试设置路径等。我的意思是,如果文本文件位于已设置为源的资源文件夹中,则文本文件将无效。

This is a link to a picture of my file structure within my project.

This is a link to a picture of my text file loader.

我已经看了一些其他问题但是所有这些问题都解释了如何从例如C驱动器中读取文件,而我想知道如何从已完成的jar文件中捆绑的文件中读取。

我真的很感激我能得到的任何帮助,因为我已经试图解决这个问题几天没有运气。

3 个答案:

答案 0 :(得分:2)

您可以使用ClassLoader类访问resouces文件夹中的文件,如下所示:

 public static String[] load(String path){
     ClassLoader classLoader = ResourceLoader.class.getClassLoader();
     File file = new File(classLoader.getResource(path).getFile());
     List<String> lines = null;
     try {
         lines = Files.readAllLines(file.toPath());
    } catch (IOException e) {
        e.printStackTrace();
    }
     return  lines.toArray(new String[lines.size()]);
}

您也可以使用Files.readAllLines将文本文件读入List

查看此tutorial

希望这可以提供帮助。

答案 1 :(得分:0)

首先,要从jar中读取,当有选择时,使用URL而不是File的方法形式会更好。操作系统的文件系统通常无法查看jar文件。

有关寻址的一些说明可以在Class的api中找到。

该地址将尝试使用与您用作基类的类相同的文件位置。在你的情况下,这是ResourceLoader,它位于GameFolder包中。

要升级,您可以使用&#34; ..&#34;,这样您就可以尝试通过&#34; ../ src / resources /&#34;获取网址。 +路径。我没有测试过,所以可能需要进一步调整才能成为正确的答案。但也许所提出的概念可以帮助您找到答案。

答案 2 :(得分:0)

一旦你说你已经看过如何从资源中读取文件,我将跳过这个解释,只需粘贴关于它的mais线程here

你还谈到了指向C盘的例子。一旦我相信你将它用于专业项目(或者至少一个具有更好结构的项目),我建议你看看Maven和Gradle如何配置你的资源路径(主要和测试):MavenGradle