我有几个外部文件要添加到我的jar文件中并访问该类中的这些文件。我正在使用java -jar
命令从命令行运行此jar文件。因此,当我使用绝对路径时,我可以访问文件内容,但是当我使用相对路径时,我得到java.io.IOException: (No such file or directory)
。我已将我的文件都包含在src/main/resorces
目录中。我尝试过使用file.conf, /file.conf, ./file.conf
,但都没有奏效。还尝试在build.gradle中包含文件
from{
["file1.conf","file2.conf"]
}
。
任何想法如何使用文件的相对路径访问我的java代码中的文件内容?
答案 0 :(得分:0)
如果我理解正确,您想要访问驻留在类路径中的文件。这些文件将与您的应用程序一起打包,您可以通过名称了解它们。如果这是正确的,并且您没有特别需要java.io.File
但是接受文件内容的方式,我建议:
try (InputStream is = MyClass.class.getResourceAsStream("/file.conf")) {
// do something with the input stream
}
如果您愿意,还可以检索文件的java.net.URL
。
简而言之,String属性的语法如下:
/
开头,则从类路径的根解析名称。例如,如果运行java -jar hello.jar
,则file.conf必须位于hello.jar的根目录/
开头,那么该名称将相对于您调用getResourceAsStream()
方法的类进行解析。查看Class API了解详情。