2011-10-11 15 views

答えて

389
String fileContents = new File('/path/to/file').text 

あなたの代わりに、以下を使用し、文字エンコーディングを指定する必要がある場合:

+48

それだけですか? – raffian

+6

それはGroovyの美しさです:) – Igor

+1

close()文を実行する必要がありますか、読者はgetText()メソッドで終了しますか? –

11

最も簡単な方法はあなただけで行うことができます意味

new File(filename).getText()

次のようになります。

new File(filename).text

32

わずかな変動...

new File('/path/to/file').eachLine { line -> 
    println line 
} 
+5

これはファイルの内容を変数 –

+3

に読み込みませんが、それでも "レコードのために"キャプチャするのには便利な慣用法です。 –

67

最短の方法は、確かにちょうど

String fileContents = new File('/path/to/file').text 

であるが、この場合には、ファイルのバイトを文字として解釈されている方法に制御することはできません。 AFAIK groovyは、ファイルの内容を見て、ここでエンコーディングを推測しようとします。

あなたは、さらに参考のために参照してくださいAPI docs on File.getText(String)

String fileContents = new File('/path/to/file').getText('UTF-8') 

と文字セット名を指定することができますコードする特定の文字をしたい場合。

+6

+1エンコードパラメータを使用するバージョンを推奨します。プレーンな 'someFile.text'は賢明な推測をしません。プラットフォームのデフォルトのエンコーディング(現代のLinuxではUTF-8ですが、Windows/Mac OSではwindows-1252やMacRomanのようなものです。それは '-Dfile.encoding = ...'で) –

関連する問題