使用gradle

时间:2016-08-01 10:17:16

标签: java gradle build.gradle

我有几个外部文件要添加到我的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代码中的文件内容?

1 个答案:

答案 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了解详情。