从Grails中的java类读取属性文件

时间:2014-04-25 08:10:05

标签: java grails properties

我把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"]

1 个答案:

答案 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位于同一个包中的类。不要忘记检查流 是否为空,因为如果它无法加载资源就会出现。