2014-12-13 58 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