我需要从文件系统中读取一个文件并将整个内容加载到一个groovy控制器中的字符串中,这是最简单的方法吗?
答案 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)
答案 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();