我把urls.properties放在conf文件夹和src / java文件夹中,但是当我想从grails项目的java类中读取这个文件时,我收到一个错误:java.io.FileNotFoundException: urls.properties (The system cannot find the file specified)
。
我尝试使用以下代码阅读此文件:
io = new FileInputStream("urls.properties");
prop.load(io);
url = prop.getProperty(urlName);
出了什么问题以及为什么我会收到此错误?我在Config.groovy中有一个conf参数
grails.config.locations = ["classpath:urls.properties"]
答案 0 :(得分:2)
有关加载外部配置文件的信息,请参阅手册中的本章: http://grails.org/doc/2.3.7/guide/single.html#configExternalized
在使用grails.config.locations指定了属性文件后,在启动应用程序时会自动加载属性,因此应该可以在grailsApplication.config对象中访问它们,如下所示:
def grailsApplication // Injects the grailsApplication object to your service/controller
...
grailsApplication.config.myproperty
在此处阅读有关如何访问配置属性的更多信息: http://grails.org/doc/2.3.7/guide/conf.html
您尝试对代码执行的操作是从当前工作目录加载文件,并且该文件可能不存在。因此错误代码。
修改
如果要加载类路径中存在的文件,则应将其作为资源加载。像这样:
InputStream is = MyClass.class.getResourceAsStream("urls.properties");
...其中MyClass是一个与urls.properties位于同一个包中的类。不要忘记检查流 是否为空,因为如果它无法加载资源就会出现。