Ho bisogno di leggere un file dal file system e caricare l'intero contenuto in una stringa in un controller groovy, qual è il modo più semplice per farlo?Come leggere un file in Groovy in una stringa?
risposta
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')
il modo più semplice sarebbe quella
che significa che si può solo fare:
new File(filename).text
Una leggera variazione ...
new File('/path/to/file').eachLine { line ->
println line
}
questo non legge il contenuto del file in una variabile –
Vero, ma è comunque un utile linguaggio da catturare "per la registrazione". –
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.
+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 = ...') –
questo è tutto? jeez, mi sento un idiota per chiedere, grazie – raffian
Questa è la bellezza di Groovy :) – Igor
Devo eseguire alcune istruzioni close() o il lettore verrà chiuso dal metodo getText()? –