2011-01-02 8 views

risposta

18

Utilizzando Apache Commons IO, è possibile utilizzare il metodo FileUtils#readLines. E 'semplice come:

List<String> lines = FileUtils.readLines(new File("...")); 
for (String line : lines) { 
    System.out.println(line); 
} 
+2

'IOUtils.lineIterator' è una scelta migliore in quanto non carica l'intero file in memoria. –

7

utilizzando org.apache.commons.io.FileUtils

FileUtils.readLines(new File("file.txt")); 
12

È possibile utilizzare Guava:

Files.readLines(new File("myfile.txt"), Charsets.UTF_8); 

o Apache Commons IO:

FileUtils.readLines(new File("myfile.txt")); 

direi entrambi sono ugualmente elegante.

A seconda del vostro uso esatto, assumendo che la "codifica predefinita" potrebbe essere una buona idea o no. Ad ogni modo, personalmente trovo che l'API di Guava chiarisca che stai facendo una supposizione sulla codifica del file.

Aggiornamento: Java 7 ora ha questo integrato: Files.readAllLines(Path path, Charset cs). E anche lì devi specificare il set di caratteri esplicitamente.

4

sono abbastanza simili, con Commons IO essa sarà simile a questa:

List<String> lines = FileUtils.readLines(new File("file.txt"), "UTF-8"); 

vantaggio principale di Guava è la specificazione del set di caratteri (senza errori di battitura):

List<String> lines = Files.readLines(new File("file.txt"), Charsets.UTF_8); 
2

Sono non so se vuoi solo sapere come farlo tramite Guava o Commons IO, ma dato che Java 7 può essere fatto tramite java.nio.file.Files.readAllLines(Path path, Charset cs) (javadoc).

List<String> allLines = Files.readAllLines(dir.toPath(), StandardCharsets.UTF_8); 

Dal momento che questo fa parte del Java SE che non richiede di aggiungere eventuali file jar aggiuntivi (Guava o Commons) al progetto.

Problemi correlati