Differenza di input Java

di il
2 risposte

Differenza di input Java

Salve, volevo sapere qual' è la differenza tra prendere in input stringhe da uno Scanner o da un Buffered Reader ??

2 Risposte

  • Re: Differenza di input Java

    progir ha scritto:


    Salve, volevo sapere qual' è la differenza tra prendere in input stringhe da uno Scanner o da un Buffered Reader ??
    Presupponendo che non ci siano differenze nello strato più sottostante (es. entrambe hanno come sorgente System.in), le differenze sono solo "tecniche" nella API tra Scanner e BufferedReader.

    BufferedReader è specializzata nel saper bufferizzare i caratteri (ha un buffer interno) e nel saper leggere "a righe". Non sa fare altro di specifico. Inoltre qualunque errore di I/O viene esposto lanciando IOException.

    Scanner sa fare molte cose, sa estrarre token anche di svariati tipi e in modo sofisticato, usando una espressione regolare per il deliminatore. Non a caso, in certi libri, viene definita "la Cadillac della tokenizzazione". Sul fronte della gestione degli errori invece è meno pignola/rigorosa, i suoi metodi di lettura non lanciano IOException. Al massimo lanciano alcune altre eccezioni che tra l'altro sono "unchecked" (vedi javadoc).
    Se vuoi sapere quale è stata l'ultima eccezione IOException lanciata dallo stream sottostante, allora devi chiamare tu esplicitamente ioException().

    Morale: se devi leggere da System.in, allora Scanner va benissimo. Difficilmente ci sono problemi di I/O dallo standard-input. Se invece devi leggere un file di testo e vuoi farlo in modo rigoroso, ricevendo notifica di qualunque errore, allora BufferedReader (o altra classe di I/O).
  • Re: Differenza di input Java

    Grazie, è stato molto chiaro
Devi accedere o registrarti per scrivere nel forum
2 risposte