[ casperns2 @ 08.01.2014. 13:12 ] @
Pozdrav, jedno pitanje nevezano za neki zadatak.

Kada sam poceo sa ucenjem Jave koristio sam ColsoleReader , onda su mi ovde preporucili da koristim BufferedReader za ulaz podataka a sada nailazim na Scanner da se koristi u nekim primerima.

Zanima me koja je razlika izmedju ovih klasa i da li treba da se opterecujem koju klasu za ulaz cu koristiti, da li je neka opste prihvacena?

[ blekmor @ 11.02.2014. 02:14 ] @
Java I/O je prilično komplikovan. Pruža mnogo opcija korisniku, ali je zato prilično komplikovan za korištenje.

Console služi samo za čitanje sa konzole, i radi posao ako je samo to potrebno. Prilično je jednostavan i shvatljiv. Ja ga lično ne koristim.

BufferedReader je samo wrapper(omotač) oko ostalih Reader-a koji čitaju karaktere http://docs.oracle.com/javase/7/docs/api/java/io/Reader.html , i on služi za ubrzavanje čitanja. Da ne bi čitali znak po znak, on će da pročita više znakova odjednom i da ih sačuva u svojoj memoriji. BufferedReader sam ne radi ništa. Njemu je potreban objekat koji će ustvari da "vrši čitanje", te stoga treba da ispišeš mnogo stvari kada ga inicijalizuješ
Code:
new BufferedReader(new InputStreamReader(System.in))

Praviš novi BufferedReader, ali mu daješ InputStreamReader i uloga BufferedReadera je da ustvari ubrza rad sa InputStreamReaderom. InputStreamReader će da "pretvori" bajtove koje dobije iz svog InputStreama u karaktere. Njegov InputStream je System.in - konzola.
Znači : sa konzole se šalju bajtovi (System.in), InputStreamReader ih "pretvara" u karaktere i skladišti ih u BufferedReader-u sa kojim ti radiš.

Scanner je još jedna stepenica iznad. On ne samo da čita strim, nego ga može i parsirati. Skeneru možeš proslijediti BufferedReader kao strim sa koga treba da čitaš.

Ja ti preporučujem da koristiš BufferedReader ako čitaš iz nekih fajlova ili sa mreže. Ukoliko podatke treba da parsiraš, onda koristi Scanner(možeš čak gurnuti i čitav onaj BufferedReader koji si napravio za čitanje fajla u prethodnoj rečenici). Napomena : Scanner nije thread safe dok BufferedReader jeste(ova izjava će ti biti jasnija kada naučiš niti).
Ukoliko čitaš sa konzole, onda je ok da koristiš Console, ako ti je tako lakše.

Pozdrav
[ casperns2 @ 11.02.2014. 13:04 ] @
Hvala , sada je sve mnogo jasnije, ovo je i vise nego sto sam ocekivao za objasnjenje... hvalaa