用grails读取文件

Iva*_*gin 2 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()
Run Code Online (Sandbox Code Playgroud)

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

谢谢你的帮助,伊万

Jos*_*ore 7

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

因此,例如,如果您的文件在,src/java/com/example/textfile.txt那么您可以将其作为File使用来访问grailsResourceLocator.findResourceForURI('classpath:/com/example/textfile.txt').getFile()

可以在此博客文章中找到详细示例,Resource的API文档也可以提供帮助.

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