我需要从文件系统中读取一个文件,并将整个内容加载到groovy控制器中的字符串中,最简单的方法是什么?
当前回答
略有变化……
new File('/path/to/file').eachLine { line ->
println line
}
其他回答
在这里,你可以找到其他方法来做同样的事情。
读文件。
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();
逐行读取文件。
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();
在我的情况下,新文件()不工作,它导致FileNotFoundException运行在Jenkins管道作业。下面的代码解决了这个问题,在我看来甚至更简单:
def fileContents = readFile "path/to/file"
我仍然不完全理解其中的区别,但也许它会帮助其他有同样麻烦的人。这个异常可能是因为new File()在执行groovy代码的系统上创建了一个文件,而这个文件与包含我想要读取的文件的系统不同。
捷径确实是正义的
String fileContents = new File('/path/to/file').text
但是在这种情况下,您无法控制文件中的字节如何被解释为字符。AFAIK groovy试图通过查看文件内容来猜测这里的编码。
如果需要特定的字符编码,可以使用指定字符集名称
String fileContents = new File('/path/to/file').getText('UTF-8')
请参阅File.getText(String)上的API文档以获得进一步参考。
略有变化……
new File('/path/to/file').eachLine { line ->
println line
}
String fileContents = new File('/path/to/file').text
如果你需要指定字符编码,请使用下面的代码:
String fileContents = new File('/path/to/file').getText('UTF-8')
推荐文章
- 将列表的Python列表写入csv文件
- 不能与文件列表一起使用forEach
- python方式检查文件是否存在?
- Jenkins:注释可以添加到Jenkins文件中吗?
- BAT文件执行后保持CMD打开
- 从包含文件名的路径获取不包含文件名的完整路径
- Git:从另一个分支复制目录中的所有文件
- PHP,获取没有文件扩展名的文件名
- 如何在远程系统上使用Ansible任务移动/重命名文件
- 从java.io.File获取java.nio.file.Path对象
- 用c#编写数据到CSV文件
- 安卓系统;检查文件是否存在而不创建新的文件
- 如何改变。net WebClient对象的超时时间
- 我如何可以删除在VIM所有文本从当前行文件结束?
- 如何比较二进制文件,以检查他们是否相同?