Java中ressource的空值
我想把resources放在我的JAR文件中,但是,当我想使用它时,出现了一个问题。如果我用以下代码显示路径: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.
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文件夹中。File1getResourceAsStream()
返回一个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();
}