2014-12-13 97 views
2

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

我只是想不通哪里把它放在Grails应用程序和如何阅读。

我试过把它们放到src/java中,并从src/grails,域,服务等中读取它们。没有任何工作。只有工作的事情是把它变成的grails-app/conf目录和这样的阅读:

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

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

感谢您的帮助, 伊万

回答

6

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

因此,举例来说,如果你的文件是src/java/com/example/textfile.txt那么你可以访问它使用grailsResourceLocator.findResourceForURI('classpath:/com/example/textfile.txt').getFile()

具体示例File可以在此blog post中找到并Resource API文档可以很好的帮助。

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

+0

是的,API是一个很酷的抽象,因为你不必考虑开发环境和展开的部署WAR文件之间非常不同的文件布局,或者甚至考虑如果WAR不能访问文件没有扩大。 – 2014-12-14 04:12:34