2011-10-11 55 views

回答

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

如果你需要指定的字符編碼,改用以下:

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

就是這樣? jeez,我覺得自己像個白癡一樣問道,謝謝 – raffian

+6

這就是Groovy的美妙:) – Igor

+1

我需要執行一些close()語句還是讀者可以通過getText()方法關閉? –

32

細微變化......

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

這不會將文件內容讀入變量 –

+3

確實如此,但它仍然是捕獲「用於記錄」的有用慣用語。 –

67

的捷徑確實只是

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

但在這種情況下,您對如何將文件中的字節解釋爲字符無法控制。 AFAIK groovy試圖通過查看文件內容來猜測編碼。

如果你想編碼你可以指定一個字符集名稱的特定字符

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

進一步參考見API docs on File.getText(String)

+6

+1用於推薦使用編碼參數的版本。簡單的'someFile.text'並沒有做出明智的猜測,它只是使用平臺默認編碼(通常在現代Linux上使用UTF-8,但在Windows/Mac OS上使用windows-1252或MacRoman),除非你已經重寫它與'-Dfile.encoding = ...') –

相關問題