2011-12-24 7 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 
} 

限りあなたの主な懸案事項は何ですか? OpenCSV(most of the Grails libraries for CSV parsingで使用)などのCSVライブラリを使用している場合、ファイルのオープンと解析が処理されます。

それ以外のセキュリティ問題については、一般的な方法でそれらを処理する方法がわかりません。特定のシナリオによって異なります。私はURLから来るものが高いリスクファクターを持っていると思う。

+0

CSV解析は感謝の気持ちで行われます。 – paislee

+0

さて、あなたはまだ "安全かつ適切にファイルを読み込む方法" *に答えるために多くのことを提供しているわけではありませんが、 'new File(path).withReader {reader - > ... } 'は、ファイルのオープンとクローズを処理します。 – OverZealous

+0

ここに具体的なものがないと申し訳ありません。一般的には、私のために解決したソリューションを持っているのは不快です。 Grails/Groovyの新機能ですが、熱心なコーダーで、別の戦略を選択する理由を探しています。ヘルプをよろしくお願いいたします。 – paislee

関連する問題