Respuestas:
String fileContents = new File('/path/to/file').text
Si necesita especificar la codificación de caracteres, utilice lo siguiente:
String fileContents = new File('/path/to/file').getText('UTF-8')
File
objeto se originó a partir de un jar de Java común. No estaba seguro de si Groovy tenía su propia File
clase especial con el text
atributo, o algo así, pero parece que no importa de dónde File
provenga el objeto, ya sea instanciado por el código Groovy o el código Java.
El camino más corto es de hecho solo
String fileContents = new File('/path/to/file').text
pero en este caso no tiene control sobre cómo los bytes del archivo se interpretan como caracteres. AFAIK groovy intenta adivinar la codificación aquí mirando el contenido del archivo.
Si desea una codificación de caracteres específica, puede especificar un nombre de conjunto de caracteres con
String fileContents = new File('/path/to/file').getText('UTF-8')
Consulte los documentos de API enFile.getText(String)
para obtener más información.
someFile.text
no hace una suposición inteligente, simplemente usa la codificación predeterminada de la plataforma (generalmente UTF-8 en Linux modernos, pero algo como Windows-1252 o MacRoman en Windows / Mac OS, a menos que lo haya anulado -Dfile.encoding=...
)
Una ligera variación ...
new File('/path/to/file').eachLine { line ->
println line
}
la forma más fácil sería
lo que significa que podrías hacer:
new File(filename).text
En mi caso new File()
no funciona, provoca un FileNotFoundException
cuando se ejecuta en un trabajo de tubería de Jenkins. El siguiente código resolvió esto, y es aún más fácil en mi opinión:
def fileContents = readFile "path/to/file"
Todavía no entiendo esta diferencia por completo, pero tal vez ayude a cualquier otra persona con el mismo problema. Posiblemente, la excepción fue causada porque new File()
crea un archivo en el sistema que ejecuta el código maravilloso, que era un sistema diferente al que contiene el archivo que quería leer.
String fp_f = readFile("any_file") if (fp.length()) { currentBuild.description = fp }
Además, si no se encuentra el archivo, entonces hay un error.
Aquí puede encontrar otra forma de hacer lo mismo.
Leer archivo
File file1 = new File("C:\Build\myfolder\myTestfile.txt");
def String yourData = file1.readLines();
Leer el archivo completo.
File file1 = new File("C:\Build\myfolder\myfile.txt");
def String yourData= file1.getText();
Leer el archivo 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)
}
Crea un nuevo archivo.
new File("C:\Temp\FileName.txt").createNewFile();
def
cuando especifique el tipo.