Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    105

    [JAVA] funzionamento fileinputstream e fileoutputstream

    Salve ragazzi.. Con google non ho trovato nulla di interessante quindi chiedo a voi.. Come funzionano le funzioni read e write delle classi fileoutputstream e fileinputstream?? Non capisco a cosa serve l'array di byte che passo come argomento..
    Grazie.

  2. #2

    Re: [JAVA] funzionamento fileinputstream e fileoutputstream

    Originariamente inviato da Cawletto
    Salve ragazzi.. Con google non ho trovato nulla di interessante quindi chiedo a voi.. Come funzionano le funzioni read e write delle classi fileoutputstream e fileinputstream?? Non capisco a cosa serve l'array di byte che passo come argomento..
    Grazie.
    Ciao, leggi il solito ottimo tutorial oracle poi sei hai ancora dubbi...
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    105
    grazie mille per la risposta ma continuo a non capire..

    Ti faccio un esempio..
    codice:
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    
    public class Main {
      public static void main(String[] argv) throws Exception {
        File file = new File("c:\\a.bat");
        InputStream is = new FileInputStream(file);
    
        long length = file.length();
        if (length > Integer.MAX_VALUE) {
          System.out.println("File is too large");
        }
    
        byte[] bytes = new byte[(int) length];
    
        int offset = 0;
        int numRead = 0;
        while (numRead >= 0) {
          numRead = is.read(bytes, offset, bytes.length - offset);
          offset += numRead;
        }
    
        if (offset < bytes.length) {
          throw new IOException("Could not completely read file " + file.getName());
        }
        is.close();
        System.out.println(new String(bytes));
      }
    }
    Nella linea
    codice:
    numRead = is.read(bytes, offset, bytes.length - offset);
    che cosa accade?? In che modo viene usato l'array "bytes" ???

  4. #4
    codice:
    numRead = is.read(bytes, offset, bytes.length - offset);
    che cosa accade?? In che modo viene usato l'array "bytes" ???
    D'accordo, anche se mi pare chiaro dalla documentazione provo a spiegarti a parole mie cosa viene fatto dal codice sopra.
    I passi seguiti sono :
    -apertura di un file
    -apertura di un FileInputStream associato al file (flusso di bytes)
    -test sui limiti di memoria rispetto alle dimensioni del file
    -allocazione di un array di byte grande abbastanza da ospitare contenuto del file
    -ciclo nel quale si legge il file per porzioni consecutive (grandi FINO A bytes.length - offset)
    -il ciclo termina quando read restituisce 0, cioè zero bytes letti
    -il controllo successivo verifica che offset sia arrivato a un valore pari alla lunghezza del file, in caso contrario c'è stato qualche problema in lettura
    -chiusura dello stream

    La riga evidenziata legge fino a bytes.length - offset bytes a partire dalla posizione corrente del cursore interno allo stream e li scrive sull'array bytes a partire dalla posizione offset (che poi è il cursore di scrittura sull'array destinazione)
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    105
    Ora ho capito.. Grazie per la pazienza

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.