Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    111

    [JAVA I/O] differenza tra flusso di byte e di caratteri:ESEMPIO

    Ciao a tutti,

    sto studiando il sistema di input/output di Java e mi sembra di aver capito abbastanza la differenza tra il flusso di byte e di caratteri ma facendo degli esperimenti vedo che riesco a scrivere ugualmente stringhe in file sia tramite un FileWriter che un FileOutputStream...

    Potrei avere un CONTROESEMPIO?

    Cioè per capire bene vorrei che mi indicaste un caso in cui usando un flusso di byte al posto di un flusso di caratteri o viceversa non si ottiene il risultato sperato...

    E' possibile? Mi interesserebbe molto a scopo di studio,

    Grazie mille in anticipo!!

  2. #2

    Re: [JAVA I/O] differenza tra flusso di byte e di caratteri:ESEMPIO

    Originariamente inviato da keanu
    Cioè per capire bene vorrei che mi indicaste un caso in cui usando un flusso di byte al posto di un flusso di caratteri o viceversa non si ottiene il risultato sperato...
    In cosa consisterebbe questo risultato non sperato?

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Bhè, prova a copiare un binary come copieresti un file di testo e vedi che succede... il contrario invece non dovrebbe generare alcun problema.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    111
    Grazie per le risposte....

    ho fatto prove di questo tipo ad esempio scrivere stringhe su file tramite flusso binario e in un altro file tramite flusso a caratteri ma i file sono venuti identici, anche confrontandoli a livello binario con il comando diff (uso linux)..

    Poi ho fatto il contrario, cioè copiare dati binari quindi codici non corrispondenti a caratteri Unicode (con le opportune conversioni di tipo) tramite flussi a caratteri e anche qui le prove hanno dato esito positivo...

    Ecco volevo sapere se qualcuno con più esperienza di me sapeva mostrarmi o solo accennarmi un esempio in cui usando il flusso non del tutto adatto per il tipo di dati, si ottiene un risultato non corretto...

    Grazie ancora...

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    con qualche omissis:
    codice:
            try {
                BufferedReader br = new BufferedReader(new FileReader(origin));
                BufferedWriter bw = new BufferedWriter(new FileWriter(destination));
                
                String line = "";
                while ((line = br.readLine()) != null) {
                    bw.write(line+"\n");
                }
                bw.flush();
                bw.close();
                br.close();
                
            }
            catch (Exception e) {
                e.printStackTrace();
            }
    se chiami quel brano di codice con origin un file binario, tipo un immagine jpg, non solo non è detto che ottieni un file effettivamente contenente un immagine, 99.999995% non sarà così, ma con altrettanto alte probabilità, i due file non avranno nemmeno le stesse dimensioni
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  6. #6
    Originariamente inviato da keanu
    un esempio in cui usando il flusso non del tutto adatto per il tipo di dati, si ottiene un risultato non corretto
    Io ho fatto questo test:
    codice:
        public static void main(String[] args) throws IOException{
            // TODO code application logic here
            new File("prova").createNewFile();
            
            ObjectOutputStream oos = new ObjectOutputStream( new FileOutputStream("prova") );
            oos.writeObject("stringa di prova");
            oos.close();
            
            new File("prova2").createNewFile();
            
            BufferedReader br = new BufferedReader( new FileReader("prova") );
            PrintStream ps = new PrintStream( new FileOutputStream("prova2") );
            
            String line = null;
            while( (line = br.readLine()) != null )
            	ps.println( line );
    
            br.close();
            ps.close();
        }
    nel file prova scrivo utilizzando lo stream di oggetti, dal quale vado a leggere utilizzando lo stream dei caratteri e scrivo cio' che viene letto nel file prova2.

    Confrontando i due files utilizzando il modulo COMP di windows risultano essere diversi per dimensione.

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.