如何将Groovy中的文件读入字符串?

时间:2011-10-11 16:24:21

标签: file groovy

我需要从文件系统中读取一个文件并将整个内容加载到一个groovy控制器中的字符串中,这是最简单的方法吗?

6 个答案:

答案 0 :(得分:460)

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

如果您需要指定字符编码,请改用以下内容:

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

答案 1 :(得分:75)

最短的方式确实只是

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)

答案 2 :(得分:46)

略有变化......

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

答案 3 :(得分:11)

最简单的方法是

new File(filename).getText()

这意味着您可以这样做:

new File(filename).text

答案 4 :(得分:7)

在我的情况下new File()无法正常工作,在Jenkins管道作业中运行时会导致FileNotFoundException。以下代码解决了这个问题,在我看来更容易:

def fileContents = readFile "path/to/file"

我仍然完全不了解这种差异,但也许它可以帮助其他人遇到同样的麻烦。可能是异常是由于new File()在系统上创建了一个执行groovy代码的文件,这个文件与包含我想要阅读的文件的系统不同。

答案 5 :(得分:2)

在这里你可以找到其他方法来做同样的事情。

读取文件。

File file1 = new File("C:\Build\myfolder\myTestfile.txt");
def String yourData = file1.readLines();

阅读完整档案。

File file1 = new File("C:\Build\myfolder\myfile.txt");
def String yourData= file1.getText();

读取文件Line Bye Line。

File file1 = new File("C:\Build\myfolder\myTestfile.txt");
for (def i=0;i<=30;i++) // specify how many line need to read eg.. 30
{
 log.info file1.readLines().get(i)

}

创建一个新文件。

new File("C:\Temp\FileName.txt").createNewFile();