用grails读取文件

时间:2014-12-13 13:27:39

标签: java grails groovy

所以我有几个.drlt文件(普通的txt文件,作为规则引擎的模板)和 我需要读取它们并在应用程序的bootstrap中输入一些静态字符串变量。

我无法弄清楚哪里将它放在grails应用程序中,如何来阅读它们。

我已经尝试将它们放到src / java并从src / grails,域,服务等读取它们。这些都没有用。唯一有效的方法是将它放入grails-app / conf并按如下方式阅读:

def classLoader = Thread.currentThread().contextClassLoader
def fileReader = classLoader.getResourceAsStream('my-file.drlt').newReader()

但我不想将我的模板文件放在config目录中。 我已经阅读了很多帖子和解决方案'对于这个问题,但没有它们是很好的解决方案。是否真的有可能在Grails这样一个稳定的框架中做得不好?

感谢您的帮助, 伊万

1 个答案:

答案 0 :(得分:7)

由于Grails是一个结构良好的Spring应用程序,因此您可以利用ResourceResourceLoader加载文本文件。 grailsResourceLocator使用这些非常简单(确保将它注入到bean中)。使用这些类,您可以在src/javasrc/groovy目录中找到您的文件,并将其视为任何其他类资源。

例如,如果您的文件位于src/java/com/example/textfile.txt,那么您可以使用File

grailsResourceLocator.findResourceForURI('classpath:/com/example/textfile.txt').getFile()的身份访问该文件

可在此blog post中找到详细示例,Resource的API文档也可能有所帮助。

这是处理Grails应用程序中资源的正确方式。