有许多类似的问题,但这不是重复。这类似于“无法访问Jar文件中的文件”,但存在细微差别。通过大量的实验和论坛阅读,我设法访问文件的内容并在Jar文件中显示它们。问题是,如果我将文件放在一个文件夹中,那么即使它在我运行类文件时它仍然有效,我的程序将不再有效。这是一个问题,因为当我制作游戏和其他程序时,我喜欢为组织提供不同的文件夹,如“地图”和“spritesheets”。我做了一个实验程序来解决问题,这里是代码:
try {
InputStream is = getClass().getResourceAsStream("folder\\test.txt");
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
br.close();
isr.close();
is.close();
} catch (Exception ex) {}
我没有在catch部分做任何事情,因为我已经用它来找到有问题的区域。这是我的目录结构:
JarFileText
classes
com
sayedhajaj
folder
test.txt
JarFileText.class
test.txt
source
com
sayedhajaj
JarFileText.java
当我尝试访问不在文件夹中的文本文件的副本时,一切正常。但是,如果我尝试访问“folder”中的副本,则返回null。
答案 0 :(得分:2)
这是解决方案:
try {
InputStream is = getClass().getResourceAsStream("folder/test.txt");
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
br.close();
isr.close();
is.close();
} catch (Exception ex) {}