Lezen van een tekstbestand in Java
Het lijkt erop dat er verschillende manieren zijn om gegevens van bestanden in Java te lezen en te schrijven.
Ik wil ASCII data uit een bestand lezen. Wat zijn de mogelijke manieren en hun verschillen?
899
3
Mijn favoriete manier om een klein bestand te lezen is het gebruik van een BufferedReader en een StringBuilder. Het is heel eenvoudig en to the point (hoewel niet bijzonder effectief, maar goed genoeg voor de meeste gevallen):
Sommigen hebben erop gewezen dat je na Java 7 try-with-resources moet gebruiken. (d.w.z. auto close) functies:
Als ik dit soort strings lees, wil ik meestal toch al wat string handling per regel doen, dus dan ga ik voor deze implementatie.
Hoewel, als ik eigenlijk alleen maar een bestand in een String wil lezen, gebruik ik altijd Apache Commons IO met de klasse IOUtils.toString() methode. Je kunt de broncode hier bekijken:
http://www.docjar.com/html/api/org/apache/commons/io/IOUtils.java.html
En nog eenvoudiger met Java 7:
ASCII is een TEKST bestand, dus je zou
Readers
gebruiken voor het lezen. Java ondersteunt ook het lezen uit een binair bestand metInputStreams
. Als de bestanden die gelezen moeten worden groot zijn, dan zou je eenBufferedReader
willen gebruiken bovenop eenFileReader
om de leesprestaties te verbeteren.Lees dit artikel over hoe je een
Reader
kunt gebruikenIk'zou je ook aanraden om dit prachtige (maar gratis) boek genaamd Thinking In Java te downloaden en te lezen.
In Java 7]6:
(docs) of
(docs)
In Java 8:
(docs)
De eenvoudigste manier is gebruik te maken van de
Scanner
klasse in Java en het FileReader object. Simpel voorbeeld:Scanner
heeft verschillende methodes voor het inlezen van strings, getallen, enz... Meer informatie hierover kun je vinden op de Java documentatie pagina.Bijvoorbeeld het inlezen van de hele inhoud in een
String
:Ook als je een specifieke encoding nodig hebt kun je dit gebruiken in plaats van
FileReader
: