How to read a file in Groovy into a string?
我需要从文件系统中读取一个文件,并将整个内容加载到groovy控制器中的字符串中,最简单的方法是什么?
如果需要指定字符编码,请使用以下代码:
号
- 就这样?天哪,我问你的话感觉像个白痴,谢谢。
- 这就是groovy的美:)
- 我是否必须执行一些close()语句,或者使用gettext()方法关闭读卡器?
- @Daskeks我认为假设这个方法的实现关闭了任何必要的资源是安全的。无论如何,您没有访问任何可能创建的读卡器的权限,因此无法关闭它。
- 我想提一下,即使EDCOX1的0个对象来自普通的Java JAR,这也是可行的。我不确定Groovy是否有它自己的EDOCX1的0个类,它有EDCOX1×2属性,或者是什么,但是不管EDCOX1×0的对象来自哪里,不管它是由Groovy代码或Java代码实例化的。
- fwiw,我发现,除非我从该行的开头去掉String ,否则变量最终是空的。
- @这是毫无意义的。我怀疑在混合中还有其他一些因素,比如你有一个隐藏了一个字段或类似的局部变量。
最短的路确实是
但在本例中,您无法控制如何将文件中的字节解释为字符。afaik groovy试图通过查看文件内容来猜测这里的编码。
如果需要特定的字符编码,可以使用
号
详见File.getText(String)上的api文档。
- +1用于推荐采用编码参数的版本。普通的someFile.text并没有做出明智的猜测,它只是使用平台默认编码(通常在现代linuxes上使用utf-8,但在windows/mac操作系统上使用类似windows-1252或macroman的编码,除非用-Dfile.encoding=...覆盖它)。
细微的变化…
- 这不会将文件内容读取到变量中
- 是的,但它仍然是一个有用的习语来捕捉"为记录"。
- 看到这一点是件好事——使得逐行处理文件变得很简单。
最简单的方法是
new File(filename).getText()。
这意味着你可以做:
江户十一〔一〕号
在我的例子中,new File()不起作用,当在Jenkins管道作业中运行时,它会导致FileNotFoundException。下面的代码解决了这一问题,在我看来更简单:
1
| def fileContents = readFile "path/to/file" |
我仍然不完全理解这种区别,但也许它能帮助其他有同样问题的人。可能是因为new File()在执行groovy代码的系统上创建了一个文件,而这个系统与包含我想要读取的文件的系统不同。
- readfile步骤对你有用吗?对我来说,这是可行的,但它在某些单词上做了单引号,我不明白!
- 它对我来说很好,并且没有遇到任何我自己没有放的引号(我猜你是指文件内容中的引号)。也许值得为此创建一个新问题?在这种情况下,请尝试指定在哪些情况下出现引号,以及引号的确切位置。
- 为詹金斯工作。因为readfile是一个内部关键字,不需要任何导入或詹金斯管理员的额外批准。整个文件可以在字符串var中读取,然后通过以下代码打印:String fp_f = readFile("any_file") if (fp.length()) { currentBuild.description = fp },如果找不到文件,则会出现错误。
在这里你可以找到其他方法来做同样的事情。
读取文件。
。
读取完整文件。
。
读取文件行,再见。
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(); |
。
- 我不确定您在指定类型时是否需要def。
- 如果不使用def代码就可以了,我有一个习惯来定义这些变量!