我需要从文件系统中读取一个文件,并将整个内容加载到groovy控制器中的字符串中,最简单的方法是什么?
当前回答
String fileContents = new File('/path/to/file').text
如果你需要指定字符编码,请使用下面的代码:
String fileContents = new File('/path/to/file').getText('UTF-8')
其他回答
最简单的方法是
新文件(filename) getText()。
这意味着你可以这样做:
new File(filename).text
String fileContents = new File('/path/to/file').text
如果你需要指定字符编码,请使用下面的代码:
String fileContents = new File('/path/to/file').getText('UTF-8')
略有变化……
new File('/path/to/file').eachLine { line ->
println line
}
捷径确实是正义的
String fileContents = new File('/path/to/file').text
但是在这种情况下,您无法控制文件中的字节如何被解释为字符。AFAIK groovy试图通过查看文件内容来猜测这里的编码。
如果需要特定的字符编码,可以使用指定字符集名称
String fileContents = new File('/path/to/file').getText('UTF-8')
请参阅File.getText(String)上的API文档以获得进一步参考。
在我的情况下,新文件()不工作,它导致FileNotFoundException运行在Jenkins管道作业。下面的代码解决了这个问题,在我看来甚至更简单:
def fileContents = readFile "path/to/file"
我仍然不完全理解其中的区别,但也许它会帮助其他有同样麻烦的人。这个异常可能是因为new File()在执行groovy代码的系统上创建了一个文件,而这个文件与包含我想要读取的文件的系统不同。
推荐文章
- 如何在Python中获得所有直接子目录
- 即使模板文件存在,Flask也会引发TemplateNotFound错误
- 如何在Ruby中创建文件
- __FILE__宏显示完整路径
- 如何使用GitHub Org Plugin从jenkins管道(jenkinsfile)触发另一个作业?
- 如何将文件指针(file * fp)转换为文件描述符(int fd)?
- 如何删除文件中的特定行?
- Groovy执行shell命令
- 使用Java重命名文件
- 如何从Python包内读取(静态)文件?
- 为什么我得到“Pickle - EOFError: run out of input”读取一个空文件?
- 写字符串到文本文件,并确保它总是覆盖现有的内容。
- 从另一个文件导入变量?
- 寻找不属于特定用户的文件
- 如何复制文件跨计算机使用SSH和MAC OS X终端