Tavallisen tekstitiedoston lukeminen Javassa
Näyttää siltä, että on olemassa erilaisia tapoja lukea ja kirjoittaa tiedostojen tietoja Javassa.
Haluan lukea ASCII-dataa tiedostosta. Mitkä ovat mahdolliset tavat ja niiden erot?
899
3
Suosikkini pienten tiedostojen lukemiseen on käyttää BufferedReaderia ja StringBuilderia. Se on hyvin yksinkertaista ja yksinkertaista (joskaan ei erityisen tehokasta, mutta riittää hyvin useimpiin tapauksiin):
Jotkut ovat huomauttaneet, että Java 7:n jälkeen pitäisi käyttää try-with-resources (eli automaattisen sulkemisen) ominaisuuksia:
Kun luen tällaisia merkkijonoja, haluan yleensä joka tapauksessa tehdä jonkin verran merkkijonojen käsittelyä rivikohtaisesti, joten silloin käytän tätä toteutusta.
Tosin jos haluan vain lukea tiedoston merkkijonoksi, käytän aina Apachen Commons IO luokan IOUtils.toString()-metodia. Voit katsoa lähdettä täältä:
http://www.docjar.com/html/api/org/apache/commons/io/IOUtils.java.html
Ja vielä yksinkertaisempaa Java 7:n kanssa:
ASCII on TEXT-tiedosto, joten lukemiseen käytetään
Readers
. Java tukee myös lukemista binääritiedostosta käyttämälläInputStreams
. Jos luettavat tiedostot ovat valtavia, kannattaa käyttääBufferedReader
FileReader
:n lisäksiBufferedReader
lukusuorituskyvyn parantamiseksi.Tutustu tähän artikkeliin
Reader
:n käytöstä.Suosittelen myös lataamaan ja lukemaan tämän ihanan (vieläpä ilmaisen) kirjan nimeltä Thinking In Java.
Javassa 7:
(docs) tai
(docs)
Javassa 8:
(docs)
Helpoin tapa on käyttää Javan
Scanner
-luokkaa ja FileReader-objektia. Yksinkertainen esimerkki:Scannerilla
on useita metodeja merkkijonojen, numeroiden jne. lukemiseen... Voit etsiä lisätietoja tästä Javan dokumentointisivulta.Esimerkiksi koko sisällön lukeminen
String
:iin:Jos tarvitset tietyn koodauksen, voit käyttää tätä
FileReader
:n sijasta: