Sono interessato alla semplice elaborazione di linee.Quali sono le classi migliori/più semplici utilizzate per leggere i file in Java?
risposta
Scanner:
for(Scanner sc = new Scanner(new File("my.file")); sc.hasNext();) {
String line = sc.nextLine();
... // do something with line
}
Adoro l'ampia varietà di metodi offerti da 'Scanner'. Grazie. Semplice e pulito. –
Dai un'occhiata alla classe Scanner.
È stato aggiunto in Java 5 per semplificare la lettura di stringhe e file rispetto alle vecchie catene FileReader e FileInputStream (non più new BufferedReader(new FileReader())
solo per ottenere un metodo readLine
).
Nella classe Scanner, è possibile utilizzare il metodo nextLine
per leggere una riga alla volta, ma ha anche molti metodi utili per trovare le primitive e le espressioni regolari nel file.
esempio di codice: http://www.kodejava.org/examples/241.html – Maxym
Lo scanner sembra davvero l'opzione corretta.Grazie. –
@Maxym: questa risposta doveva essere accompagnata da un esempio di utilizzo. Grazie. –
Apache Commons è sempre un buon punto di partenza.
È possibile utilizzare BufferedReader
, qualcosa di simile: -
try {
BufferedReader input = new BufferedReader(new FileReader(new File("c:\\test.txt")));
try {
String line = null;
while ((line = input.readLine()) != null) {
System.out.println(line);
}
} finally {
input.close();
}
} catch (IOException ex) {
ex.printStackTrace();
}
Lo scanner sembra essere più semplice e ha più opzioni. Ma grazie per aver messo qui il codice necessario. +1 –
solo "tra l'altro", quando arriverà Java7, avrà "gestione automatica delle risorse" e ciò significa che non avremo bisogno di 'try {...} finally {out.close()}' - la chiusura sarà essere fatto da JVM, e si prenderà cura di esso. – Maxym
Se siete disposti a fare uso di 3rd party libraries, poi le classi di utilità come ad esempio Files
da Guava o FileUtils
da Apache Commons IO rendere la lettura dei file molto semplice.
Esempi di seguito (dove File file = new File("path/to/file.txt")
) di lettura di tutte le righe di un file di testo in un elenco e lettura dell'intero file in una stringa.
Guava:
List<String> lines = Files.readLines(file, Charsets.UTF_8);
String contents = Files.toString(file, Charsets.UTF_8);
Apache Commons IO:
List<String> lines = FileUtils.readLines(file, "UTF-8");
String contents = FileUtils.readFileToString(file, "UTF-8")
mia raccomandazione (a partire dal 2013) è Guava, che è un moderno pulito biblioteca,, mantenuto attivamente. In genere è di qualità superiore rispetto a quello di Apache Commons.
Naturalmente, aggiungere Guava solo per questo non avrebbe senso, in quanto è una biblioteca relativamente grande. D'altra parte, non utilizzando Guava in un progetto Java oggi IMO sarebbe sciocco. :-)
Certo, JDK ora fornisce strumenti abbastanza adeguati (Scanner) per questo particolare scopo; usare una lib di terze parti per leggere i file era più giustificato quando l'alternativa era something like this.
Stavo cercando di non usare le librerie di terze parti, davvero. Ma, avevo sentito parlare di quella libreria prima. Sembra che stia guadagnando accettazione. –
@ John. Heh, "ottenere l'accettazione" potrebbe essere un modo per dirlo. La mia esperienza è che le librerie di Apache Commons sono state un pilastro nei tipici progetti Java fin dai primi anni del 00 (più recentemente aggiunti/sostituiti dalle librerie di Google, come Guava). Naturalmente, si dovrebbe considerare attentamente prima di aggiungere dipendenze, ma cose come le Commons IO spesso tirano facilmente il peso. – Jonik
È inoltre possibile utilizzare InputStreamReader (che si crea utilizzando un InputStream come FileInputStream) racchiuso in un BufferedReader per una semplice lettura di riga del file.
Si potrebbe provare FileUtils di apache. metodi come
for(String line: FileUtils.readLines(file)) {
System.out.println(line);
}
- 1. Quali sono le patch utilizzate in SVN?
- 2. Le classi interne sono leggere?
- 3. Quali sono le istruzioni IN & OUT in x86 utilizzate?
- 4. Le classi interne sono comunemente usate in Java? Sono "cattivi"?
- 5. Quali sono le radici di GC per le classi?
- 6. quali sono le interfacce più utilizzate in C#?
- 7. Quali sono le varie directory in @INC utilizzate?
- 8. Dove sono i test unitari per le classi Java "native"?
- 9. Quali sono le classi interne finali?
- 10. Quali sono i problemi con le classi interne non statiche e la serializzazione in Java
- 11. Quali sono le librerie Java più importanti?
- 12. Quali sono i metodi più semplici/migliori per la gestione dei file di tag ctags?
- 13. Quali sono i contenitori in Java
- 14. Quali sono le eccezioni controllate in Java/C#?
- 15. Quali sono i vantaggi dell'utilizzo di Classi in VBA?
- 16. Quali sono le implicazioni di avere classi duplicate in jar java?
- 17. Scala: le classi sono sufficienti?
- 18. Trova le opzioni Java utilizzate da Maven
- 19. È possibile scoprire quali classi non sono utilizzate in un'applicazione Ruby on Rails?
- 20. Ottimizza carattere Impressionante solo per le classi utilizzate
- 21. Quali sono le classi di memoria in D?
- 22. Quali sono le differenze tra le classi Helper e Utility?
- 23. Le classi sono in Python in file diversi?
- 24. Quali sono le alternative alla VM Java?
- 25. Quali sono le opzioni per i quadri REST in D?
- 26. Quali librerie Java possono essere utilizzate per generare KML?
- 27. Quali sono le alternative per aggiornare automaticamente un'applicazione Java Swing?
- 28. quali sono le tecnologie middleware java
- 29. Quali sono le differenze tra i file .dll, .lib, .h?
- 30. Quali sono le garanzie per i qualificatori di accesso scala?
In questo più recente, domanda relativa c'è una buona introduzione al di JDK built-in file di classi IO: http://stackoverflow.com/questions/19430071/proper-java-classes-for-reading-and -writing-files-in-java – Jonik