2011-10-11 68 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 = ...') –

相关问题