Java中ressource的空值

Java中ressource的空值,java,jar,executable-jar,Java,Jar,Executable Jar,我想把resources放在我的JAR文件中,但是,当我想使用它时,出现了一个问题。如果我用以下代码显示路径: JOptionPane.showMessageDialog(null, MyStaticClass.class.getResource("/ressources/") + "file.File" + i, "OK", JOptionPane.INFORMATION_MESSAGE); File file = new File(MyStaticClass.

我想把resources放在我的JAR文件中,但是,当我想使用它时,出现了一个问题。如果我用以下代码显示路径:

JOptionPane.showMessageDialog(null, MyStaticClass.class.getResource("/ressources/") + "file.File" + i, "OK", JOptionPane.INFORMATION_MESSAGE);
                File file = new File(MyStaticClass.class.getResource("/ressources/") + "file.File" + i);
messagebox的结果是
jar:file:/home/clement/Bureau/Untitled.jar/Resources/niveau.Niveau1
和验证

java.io.FileNotFoundException: jar:file:/home/clement/Bureau/Untitled.jar!/ressources/file.File1 (No file or folder of this type)
这些文件位于src/resources/file.File1的src文件夹中。File1

getResourceAsStream()
返回一个
InputStream
。您的代码基本上尝试查找文件“/resources/”,它不是文件而是目录,因此
getResourceAsStream()
为其返回
null

打印
InputStream
没有意义。你可以这样做:

InputStream is = MyStaticClass.class.getResourceAsStream("/ressources/" + "file.File1")
然后阅读它的内容(例如,使用
InputStream
read()
方法,或者用
InputStreamReader
包装它,然后使用它的
read()
。很难给出更多的建议,因为我不知道你想对你读的内容做什么

更新后的问题代码更新如下

getResource()
返回一个
URL
实例,该实例不适合打印(也不适合使用+运算符进行连接)。但如果您愿意,可以借助
getFile()
方法将其转换为
文件
实例:

File file = new File(MyStaticClass.class.getResource("/ressources/" + "file.File" + i).getFile());
还请注意,
getResource()
是对完整的资源名而不仅仅是目录名调用的

然后您可以使用该
文件
实例

但是,如果您只想读取资源内容,可以执行以下操作(无需获取
URL
instance):


本例假设您的文件是文本文件,并且至少有一行。它会将该行打印到控制台。

试试这个我编辑了这个问题,因为它是我尝试的其他代码。谢谢。
InputStream is = MyStaticClass.class.getResourceAsStream("/ressources/" + "file.File1")
Scanner scanner = new Scanner(new InputStreamReader(is, "utf-8"));
try {
    if (scanner.hasNextLine()) {
        System.out.println(scanner.nextLine());
    }
} finally {
    scanner.close();
}