2011-10-11 1 views

risposta

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

Se è necessario specificare la codifica dei caratteri, utilizzare la seguente invece :

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

questo è tutto? jeez, mi sento un idiota per chiedere, grazie – raffian

+6

Questa è la bellezza di Groovy :) – Igor

+1

Devo eseguire alcune istruzioni close() o il lettore verrà chiuso dal metodo getText()? –

32

Una leggera variazione ...

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

questo non legge il contenuto del file in una variabile –

+3

Vero, ma è comunque un utile linguaggio da catturare "per la registrazione". –

67

La via più breve è davvero solo

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

ma in questo caso si ha alcun controllo su come i byte del file sono interpretati come caratteri. AFAIK groovy prova a indovinare la codifica qui osservando il contenuto del file.

Se si desidera un carattere specifico codifica è possibile specificare un nome di set di caratteri con

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

Vedi API docs on File.getText(String) per ulteriore riferimento.

+6

+1 per raccomandare la versione che accetta un parametro di codifica. Il semplice 'someFile.text' non fa un'ipotesi intelligente, semplicemente usa la codifica predefinita della piattaforma (di solito UTF-8 su Linux moderni, ma qualcosa come Windows-1252 o MacRoman su Windows/Mac OS, a meno che tu non abbia scavalcato con '-Dfile.encoding = ...') –