Java 访问Jar文件中的文件和文件夹
有许多类似的问题,但这不是重复。这类似于“无法访问Jar文件中的文件”,但有一点不同。通过大量的实验和论坛阅读,我成功地访问了一个文件的内容,并从Jar文件中显示它们。问题是,如果我将文件放在一个文件夹中,那么我的程序将不再工作,即使它在我运行类文件时工作。这是一个问题,因为当我制作游戏和其他程序时,我喜欢有不同的组织文件夹,如“地图”和“精灵表”。我制作了一个实验程序来解决这个问题,下面是代码:Java 访问Jar文件中的文件和文件夹,java,Java,有许多类似的问题,但这不是重复。这类似于“无法访问Jar文件中的文件”,但有一点不同。通过大量的实验和论坛阅读,我成功地访问了一个文件的内容,并从Jar文件中显示它们。问题是,如果我将文件放在一个文件夹中,那么我的程序将不再工作,即使它在我运行类文件时工作。这是一个问题,因为当我制作游戏和其他程序时,我喜欢有不同的组织文件夹,如“地图”和“精灵表”。我制作了一个实验程序来解决这个问题,下面是代码: try { InputStream is = getC
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
当我尝试访问不在文件夹中的文本文件副本时,一切正常。但是,如果我尝试访问“文件夹”中的副本,则返回null。这是解决方案:
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(Exception ex){}
——说不是这样。这对我来说毫无意义:“我没有在catch部分做任何事情,因为我已经用它找到了有问题的区域。”
什么?我不明白你的意思。@ha9u63ar不,不是。阅读:资源的名称是一个“/”分隔的路径名,用于标识资源。您认为最值得信任的是什么?javadoc,或者你读过的大部分帖子?@JBNizet谢谢你的更正:)