2011-10-11 9 views

Respuesta

389
String fileContents = new File('/path/to/file').text 

Si es necesario especificar la codificación de caracteres, utilice la siguiente vez :

String fileContents = new File('/path/to/file').getText('UTF-8') 
+48

eso es todo? Dios mío, me siento como un idiota por preguntar, gracias – raffian

+6

Esa es la belleza de Groovy :) – Igor

+1

¿Tengo que ejecutar algunas declaraciones close() o el lector estará cerrado por el método getText()? –

32

Una ligera variación ...

new File('/path/to/file').eachLine { line -> 
    println line 
} 
+5

esto no lee el contenido del archivo en una variable –

+3

Cierto, pero todavía es una expresión útil para capturar "para el registro". –

67

El camino más corto es de hecho solo

String fileContents = new File('/path/to/file').text 

pero en este caso no tiene ningún control sobre cómo los bytes en el archivo se interpretan como caracteres. AFAIK groovy intenta adivinar la codificación aquí mirando el contenido del archivo.

Si desea un carácter específico codificación puede especificar un nombre de conjunto de caracteres con

String fileContents = new File('/path/to/file').getText('UTF-8') 

Ver API docs on File.getText(String) para mayor referencia.

+6

+1 para recomendar la versión que toma un parámetro de codificación. El simple 'someFile.text' no es una suposición inteligente, simplemente usa la codificación predeterminada de la plataforma (por lo general UTF-8 en Linuxes modernos, pero algo como Windows-1252 o MacRoman en Windows/Mac OS, a menos que haya reemplazado con '-Dfile.encoding = ...') –

Cuestiones relacionadas