W książce, z której uczyłem się Javy, do odczytu danych z pliku znakowego proponowano użycie FileWritera, tymczasem w różnych tutorialach online widzę, że popularne jest odczytywanie danych za pomocą Skannera zainicjowanego jako new Skanner (jakiś plik).
Ja wolę opcję ze skanerem, ale tak naprawdę nie wiem czy któraś z tych metod ma przewagę nad drugą w jakimś aspekcie ?
FileWriter czy Skanner ?
- Rejestracja: dni
- Ostatnio: dni
- Postów: 160
- Rejestracja: dni
- Ostatnio: dni
- Postów: 13
Chyba nie trudno się domyślić, że chodziło o FileReader'a...
Generalnie Scanner posiada to samo co FileReader oraz dodatkowo pozwala parsować odczytywane dane na odpowiednie typy - metody nextInt(), nextDouble() itd. .
- Rejestracja: dni
- Ostatnio: dni
IMO, Scanner jest wygodniejszy. Z którego roku jest książka? Scanner jest dostępny od wersji 1.5, która ukazała się w 2004 roku.
- Rejestracja: dni
- Ostatnio: dni
Skaner jest wygodniejszy bo ma rozne pomocnicze metody (nextInt, nextToken itp.) ktore jednak wprowadzaja pewien narzut (tokeny sa sprawdzane za pomoca regexow). Jesli jedyne co chce sie robic to wczytywanie linijka po linijce, ewentualnie split linijki na wyrazy to podejrzewam ze BufferedReader bedzie szybszy (nie mierzylem, ale zachecam forumowiczow do testow i podzielenia sie wynikami ;d). Dodatkowo, Reader, Writer i ich strumieniowe odpowiedniki to bardzo ogolne i niskopoziomowe API ktore uzywane jest wszedzie. Skanera nie przekazywalbym jako argument i nie zwracal jako wynik funkcji jesli mialyby one byc uzywane przez szersza publicznosc. Skanera zawsze mozna zrobic z Readera / InputStreama, odwrotnie bedzie duzo wiecej zabawy.