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

How to read a file in Groovy into a string?

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


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

如果需要指定字符编码,请使用以下代码:

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


最短的路确实是

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

但在本例中,您无法控制如何将文件中的字节解释为字符。afaik groovy试图通过查看文件内容来猜测这里的编码。

如果需要特定的字符编码,可以使用

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

详见File.getText(String)上的api文档。


细微的变化…

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


最简单的方法是

new File(filename).getText()

这意味着你可以做:

江户十一〔一〕号


在我的例子中,new File()不起作用,当在Jenkins管道作业中运行时,它会导致FileNotFoundException。下面的代码解决了这一问题,在我看来更简单:

1
def fileContents = readFile"path/to/file"

我仍然不完全理解这种区别,但也许它能帮助其他有同样问题的人。可能是因为new File()在执行groovy代码的系统上创建了一个文件,而这个系统与包含我想要读取的文件的系统不同。


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

读取文件。

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

读取完整文件。

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

读取文件行,再见。

1
2
3
4
5
6
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)

}

创建新文件。

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