Respostas:
String fileContents = new File('/path/to/file').text
Se você precisar especificar a codificação de caracteres, use o seguinte:
String fileContents = new File('/path/to/file').getText('UTF-8')
File
objeto tenha sido originado de um jar Java comum. Eu não tinha certeza se talvez o Groovy tivesse sua própria File
classe especial com o text
atributo, ou algo assim, mas parece que não importa de onde o File
objeto vem, seja instanciado pelo código Groovy ou código Java.
O caminho mais curto é de fato apenas
String fileContents = new File('/path/to/file').text
mas, nesse caso, você não tem controle sobre como os bytes no arquivo são interpretados como caracteres. O AFAIK groovy tenta adivinhar a codificação aqui, observando o conteúdo do arquivo.
Se você deseja uma codificação de caracteres específica, pode especificar um nome de conjunto de caracteres com
String fileContents = new File('/path/to/file').getText('UTF-8')
Consulte os documentos da APIFile.getText(String)
para obter mais referências.
someFile.text
não faz um palpite inteligente, simplesmente usa a codificação padrão da plataforma (geralmente UTF-8 nos Linux modernos, mas algo como windows-1252 ou MacRoman no Windows / Mac OS, a menos que você a tenha substituído -Dfile.encoding=...
)
Uma ligeira variação ...
new File('/path/to/file').eachLine { line ->
println line
}
a maneira mais fácil seria
o que significa que você pode fazer:
new File(filename).text
No meu caso new File()
, não funciona, causa FileNotFoundException
quando executado em um trabalho de pipeline do Jenkins. O código a seguir resolveu isso e é ainda mais fácil na minha opinião:
def fileContents = readFile "path/to/file"
Ainda não entendo completamente essa diferença, mas talvez isso ajude outras pessoas com o mesmo problema. Possivelmente, a exceção foi causada porque new File()
cria um arquivo no sistema que executa o código do groovy, que era um sistema diferente daquele que contém o arquivo que eu queria ler.
String fp_f = readFile("any_file") if (fp.length()) { currentBuild.description = fp }
Além disso, se o arquivo não for encontrado, haverá um erro.
Aqui você pode encontrar outra maneira de fazer o mesmo.
Leia o arquivo.
File file1 = new File("C:\Build\myfolder\myTestfile.txt");
def String yourData = file1.readLines();
Leia o arquivo completo.
File file1 = new File("C:\Build\myfolder\myfile.txt");
def String yourData= file1.getText();
Leia o arquivo 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)
}
Crie um novo arquivo.
new File("C:\Temp\FileName.txt").createNewFile();
def
quando especifica o tipo.