Java中的ressource的null值

时间:2017-03-15 18:59:06

标签: java jar executable-jar

我想将ressources放在我的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!/ressources/niveau.Niveau1和exeption

java.io.FileNotFoundException: jar:file:/home/clement/Bureau/Untitled.jar!/ressources/file.File1 (No file or folder of this type)

文件位于src / ressources / file.File1

的src文件夹中

1 个答案:

答案 0 :(得分:0)

getResourceAsStream()会返回InputStream。您的代码基本上尝试查找文件'/ ressources /',它不是文件而是目录,因此getResourceAsStream()会返回null

打印InputStream没有意义。你能做的就是这样:

InputStream is = MyStaticClass.class.getResourceAsStream("/ressources/" + "file.File1")

然后阅读其内容(例如,使用InputStream的{​​{1}}方法,或使用read()包装并使用它InputStreamReader。很难给出更多的建议,因为我不知道你想读什么。

更新了更新后的问题代码

read()返回getResource()实例,该实例也不适合打印(以及使用+运算符连接)。但是,如果您愿意,可以使用URL方法将其转换为File个实例:

getFile()

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

然后您可以使用该getResource()实例。

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

URL

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