Leggere e scrivere un file binario

di: Luca Santaniello     13 Ottobre 2008

Abbiamo analizzato le classi messe a disposizione da Java per leggere e scrivere dei file di testo. Adesso vediamo come leggere e scrivere i file binari, cioè sequenze di byte, come può essere ad esempio un'immagine.

Le classi che Java mette a disposizione per leggere e scrivere file binari, sono rispettivamente java.io.FileInputStream e java.io.FileOutputStream.

  • La classe FileInputStream è l'analogo della classe FileReader che viene utilizzata per leggere i dati da un file di testo.
  • La classe FileOutputStream è l'analogo della classe FileWriter che viene utilizzata per scrivere i dati in un file di testo.

Per prendere confidenza con queste classi, analizziamo subito dei semplicissimi esempi.

Lettura di un file binario

public static void read(){
  try {
    FileInputStream fis = new FileInputStream(new File("C:\\prova.jpg"));

    int c = fis.read();

    while (c != -1){
      c = fis.read();
      ..//
    }

    fis.close();
  }
  catch (FileNotFoundException e) {
    e.printStackTrace();
  }
  catch (IOException e) {
    e.printStackTrace();
  }
}

Per ottenere un'istanza della classe FileInputStream, che ci permette di aprire un file binario in modalità lettura, possiamo utilizzare uno dei seguenti costruttori della classe:

  • FileInputStream(File file) che riceve in ingresso un'istanza della classe File.
  • FileInputStream(FileDescriptor fdObj) che riceve in ingresso un'istanza della classe FileDescriptor.
  • FileInputStream(String name) che riceve in ingresso una stringa che rappresenta il path del file.

Tutti e tre i costruttori possono sollevare un'eccezione FileNotFoundException qualora il file non viene trovato oppure non può essere aperto.

Per leggere un byte si utilizza il metodo read(), che restituisce il byte sottoforma di numero intero compreso tra 0 e 255.

Il metodo read può sollevare un'eccezione, IOException, se per qualche motivo il byte corrente non può essere letto.

Esistono 3 versioni differenti del metodo read:

  • int read() che permette di leggere un byte a partire dalla posizione corrente.
  • int read(byte[] b) che permette di leggere b.length byte dal file. I byte letti vengono memorizzati nel byte array b.
  • int read(byte[] b, int off, int len) che permette di leggere len byte dal file a partire dalla posizione off. I byte letti vengono memorizzati nel byte array b.

Quando la fine del file viene raggiunta (EOF End of file), il metodo read restituisce -1.

Al termine della lettura il file può essere chiuso invocando il metodo close().

Guide Java

Guida Apache Struts

Il primo e più utilizzato tra i framework MVC del mondo Java,...

Guida Java Spring

Scoprire il lightweight container più famoso del mondo Java....

Guida Java 6

Prendendo le mosse dalla guida Java, già presente su HTML.it,...

Altre guide

Newsletter @Programmazione

Ogni mese, direttamente nella tua e-mail: articoli, script e guide su Java, Visual Basic, VB.Net ed i più diffusi linguaggi di programmazione.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Corso Google AdWords Base

25 Giugno 2012 a Milano
Disponibilità: 7 Posti

Corso Google AdWords Base

05 Giugno 2012 a Roma
Disponibilità: 7 Posti