File di testo in Java List usando Commons o Guava

Qual è il modo più elegante per inserire ogni riga di testo (dal file di testo) in LinkedList (come object String) o in qualche altra raccolta, usando le librerie di Commons o di Guava.

Ecco come farlo con Guava :

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

Riferimento:

  • Files.readLines(File, Charset)

Usando Apache Commons IO , puoi usare il metodo FileUtils#readLines . È semplice come:

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

Puoi usare Guava:

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

O apache commons io:

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

Direi che entrambi sono ugualmente eleganti.

A seconda del tuo uso esatto, assumendo che la “codifica predefinita” potrebbe essere una buona idea o meno. 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.

utilizzando org.apache.commons.io.FileUtils

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

Sono abbastanza simili, con Commons IO assomiglierà a questo:

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

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

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

Questo è probabilmente quello che stai cercando

FileUtils.readLines(File file)

Non sono sicuro che tu voglia 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 allLines = Files.readAllLines(dir.toPath(), StandardCharsets.UTF_8); 

Poiché questo fa parte di Java SE, non richiede l’aggiunta di ulteriori file jar (Guava o Commons) al progetto.