Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Dubbio su classi IO

    Ciao a tutti! Premetto che sono un niubbo di java e proprio per questo sto studiando il linguaggio! Oggi però mentre leggevo delle varie classi di IO e in particolare di Reader e Writer e delle sottoclassi, mi sono imbattuto nelle classi InputStreamReader e OutputStreamReader che dovrebbero essere un ponte di collegamento tra le InputStream/OutputStream e le Reader/Writer. Ora, io ho capito la differenza tra queste, le prime leggono/scrivono byte puri le seconde leggono/scrivono caratteri codificati secondo lo standard unicode. Quello che non capisco è l'utilità di InputStreamReader/OutputStreamReader. Qualcuno può chiarificarmi questo dubbio?
    Mario

  2. #2
    Originariamente inviato da Mariol3
    Quello che non capisco è l'utilità di InputStreamReader/OutputStreamReader. Qualcuno può chiarificarmi questo dubbio?
    Dipende dall'uso che ne vuoi fare: accedere in lettura/scrittura a files oppure socket (ma qui siamo nell'ambito delle reti dei calcolatori).

    Focalizzando l'uso di InputStreamReader nel caso della lettura di files, usando uno stream di caratteri, devi istanziare la classe InputStreamReader (oppure FileReader, che è una sua sottoclasse) e passare questa istanza ad un oggetto della classe BufferedReader.
    Invece per la scrittura nel file, usando il medesimo stream, consiglio l'uso di un oggetto della classe PrintStream.

  3. #3
    Focalizzando l'uso di InputStreamReader nel caso della lettura di files, usando uno stream di caratteri, devi istanziare la classe InputStreamReader (oppure FileReader, che è una sua sottoclasse) e passare questa istanza ad un oggetto della classe BufferedReader.
    Intanto grazie per la risposta
    In effetti per ora mi limito alla lettura/scrittura dei file. Ecco la cosa che non mi è chiara: siccome FileReader è sottoclasse di InputStreamReader, che funzionalità diverse ha, cosa aggiunge? Cioè Perchè appunto non si usa solo la InputStreamReader?
    Mario

  4. #4
    Originariamente inviato da Mariol3
    siccome FileReader è sottoclasse di InputStreamReader, che funzionalità diverse ha, cosa aggiunge?
    Se vuoi leggere da un file A (supposto che questo nel tuo programma sia una istanza della classe java.io.File) utilizzando una istanza della classe InputStreamReader sei costretto ad aprire esplicitamente un flusso di lettura di bytes verso quel file, cioè devi scrivere necessariamente:
    codice:
    new InputStreamReader( new FileInputStream( A ) );
    Invece utilizzando un oggetto della classe FileReader puoi leggere il file A senza pensare all'apertura del flusso di bytes:
    codice:
    new FileReader ( A );
    Originariamente inviato da Mariol3
    Cioè Perchè appunto non si usa solo la InputStreamReader?
    Puoi scegliere di usare una delle due. Fatto sta che FileReader non ridefinisce alcun metodo della sua superclasse.

  5. #5
    Quindi diciamo che è una questione di comodità giusto?
    Però pensandoci, un attimino mi è venuta in mente una cosa, non è che FileReader è proprio specializzata nella lettura di file mentre InputStreamReader la posso utilizzare con qualsiasi tipo di InputStream (quindi non so anche device)?
    Scusa se rompo ma è per capire bene :P
    Mario

  6. #6
    Originariamente inviato da Mariol3
    InputStreamReader la posso utilizzare con qualsiasi tipo di InputStream (quindi non so anche device)?
    Si esatto. Però convertirà i bytes in caratteri..

  7. #7
    Originariamente inviato da VincenzoTheBest
    Si esatto. Però convertirà i bytes in caratteri..
    Perfetto, adesso ho capito tutto! Ti ringrazio per la tua disponibilità
    Mario

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.