您好我一直在使用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文件中捆绑的文件中读取。
我真的很感激我能得到的任何帮助,因为我已经试图解决这个问题几天没有运气。
答案 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)