2011-12-24 102 views
0

當我的Grails應用程序啓動時,我通過從遠程URL下載的CSV文件構建數據結構。如果該文件無法訪問,我想回到本地副本。目前正在使用Quartz作業啓動服務層中的文件。如何用Grails讀取本地文件?

使用Groovy讀取Grails中的本地資源的最佳做法是什麼?

  • 我應該在哪裏藏匿文件?
  • 如何安全正確地讀取文件?

一般情況下的答案是非常可以接受的。

回答

2

我認爲處理這個問題的最好方法是將文件的位置存儲在externalized configuration file中。

所以,你要確定一個標準化的位置(如/etc/myappname/CSVFileConfig.groovy),或者使用環境變量或類似的東西來傳遞配置文件路徑。例子見Externalized Configuration

然後,你可以實際路徑簡單地添加到本地文件到extenal配置,就像這樣:

// CSVFileConfig.groovy 
my.custom.csv.path = ... 

最後,訪問它使用普通的配置操作:

// in your Quartz job 
def path = grailsApplication.config.my?.custom?.csv?.path 
if(!path) { 
    // no file to load 
} else { 
    // load file 
} 

至於閱讀文件,你最關心的是什麼?如果您使用的是CSV庫(如OpenCSV(用於most of the Grails libraries for CSV parsing)),則它將處理文件的打開和解析。

對於除此之外的安全問題,我不確定如何以通用的方式處理它們。這將取決於你的具體情況。我認爲來自網址的人有更高的風險因素。

+0

CSV解析是照顧謝謝。 – paislee 2011-12-24 06:02:05

+0

那麼,你仍然沒有提供很多東西來回答*「如何安全正確地讀取文件」*,但是你可以使用'new File(path).withReader {reader - > ... }',它處理打開和關閉文件。 – OverZealous 2011-12-24 06:14:25

+0

對不起,如果這裏沒有具體細節。一般不舒服的解決方案爲我編碼。 Grails/Groovy新手,但我是一個狂熱的編碼器,所以尋找理由選擇一種策略而不是另一種策略。感謝幫助。 – paislee 2011-12-24 06:36:47