Java FileInputStream (con esempi)

In questo tutorial, impareremo a conoscere Java FileInputStream e i suoi metodi con l'aiuto di esempi.

La FileInputStreamclasse del java.iopacchetto può essere utilizzata per leggere i dati (in byte) dai file.

Estende la InputStreamclasse astratta.

Prima di saperne di più FileInputStream, assicurati di conoscere i file Java.

Crea un FileInputStream

Per creare un flusso di input di file, dobbiamo java.io.FileInputStreamprima importare il pacchetto. Una volta importato il pacchetto, ecco come possiamo creare un flusso di input di file in Java.

1. Utilizzo del percorso del file

 FileInputStream input = new FileInputStream(stringPath); 

Qui abbiamo creato un flusso di input che verrà collegato al file specificato dal percorso.

2. Utilizzo di un oggetto del file

 FileInputStream input = new FileInputStream(File fileObject); 

Qui abbiamo creato un flusso di input che verrà collegato al file specificato da fileObject.

Metodi di FileInputStream

La FileInputStreamclasse fornisce implementazioni per diversi metodi presenti nella InputStreamclasse.

metodo read ()

  • read() - legge un singolo byte dal file
  • read(byte() array) - legge i byte dal file e li memorizza nell'array specificato
  • read(byte() array, int start, int length) - legge il numero di byte pari alla lunghezza dal file e memorizza nell'array specificato a partire dalla posizione iniziale

Supponiamo di avere un file denominato input.txt con il seguente contenuto.

 This is a line of text inside the file. 

Proviamo a leggere questo file usando FileInputStream.

 import java.io.FileInputStream; public class Main ( public static void main(String args()) ( try ( FileInputStream input = new FileInputStream("input.txt"); System.out.println("Data in the file: "); // Reads the first byte int i = input.read(); while(i != -1) ( System.out.print((char)i); // Reads next byte from the file i = input.read(); ) input.close(); ) catch(Exception e) ( e.getStackTrace(); ) ) ) 

Produzione

 Dati nel file: questa è una riga di testo all'interno del file. 

Nell'esempio precedente, abbiamo creato un flusso di input di file denominato input. Il flusso di input è collegato al file input.txt .

 FileInputStream input = new FileInputStream("input.txt"); 

Per leggere i dati dal file, abbiamo utilizzato il read()metodo all'interno del ciclo while.

disponibile () Metodo

Per ottenere il numero di byte disponibili, possiamo utilizzare il available()metodo. Per esempio,

 import java.io.FileInputStream; public class Main ( public static void main(String args()) ( try ( // Suppose, the input.txt file contains the following text // This is a line of text inside the file. FileInputStream input = new FileInputStream("input.txt"); // Returns the number of available bytes System.out.println("Available bytes at the beginning: " + input.available()); // Reads 3 bytes from the file input.read(); input.read(); input.read(); // Returns the number of available bytes System.out.println("Available bytes at the end: " + input.available()); input.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) ) 

Produzione

 Byte disponibili all'inizio: 39 Byte disponibili alla fine: 36 

Nell'esempio sopra,

  1. Per prima cosa usiamo il available()metodo per controllare il numero di byte disponibili nel flusso di input del file.
  2. Abbiamo quindi utilizzato il read()metodo 3 volte per leggere 3 byte dal flusso di input del file.
  3. Ora, dopo aver letto i byte, abbiamo nuovamente controllato i byte disponibili. Questa volta i byte disponibili sono diminuiti di 3.

metodo skip ()

Per scartare e saltare il numero di byte specificato, possiamo usare il skip()metodo. Per esempio,

 import java.io.FileInputStream; public class Main ( public static void main(String args()) ( try ( // Suppose, the input.txt file contains the following text // This is a line of text inside the file. FileInputStream input = new FileInputStream("input.txt"); // Skips the 5 bytes input.skip(5); System.out.println("Input stream after skipping 5 bytes:"); // Reads the first byte int i = input.read(); while (i != -1) ( System.out.print((char) i); // Reads next byte from the file i = input.read(); ) // close() method input.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) ) 

Produzione

 Input Stream dopo aver saltato 5 byte: è una riga di testo all'interno del file. 

Nell'esempio precedente, abbiamo utilizzato il skip()metodo per saltare 5 byte di dati dal flusso di input del file. Pertanto, i byte che rappresentano il testo "This" non vengono letti dal flusso di input.

metodo close ()

Per chiudere il flusso di input del file, possiamo usare il close()metodo. Una volta close()chiamato il metodo, non possiamo usare il flusso di input per leggere i dati.

In tutti gli esempi precedenti, abbiamo utilizzato il close()metodo per chiudere il flusso di input del file.

Altri metodi di FileInputStream

Metodi Descrizioni
finalize() assicura che il close()metodo venga chiamato
getChannel() restituisce l'oggetto FileChannelassociato al flusso di input
getFD() restituisce il descrittore di file associato al flusso di input
mark() segnare la posizione nel flusso di input fino alla quale i dati sono stati letti
reset() restituisce il controllo al punto del flusso di input in cui è stato impostato il contrassegno

Per saperne di più, visita Java FileInputStream (documentazione Java ufficiale).

Articoli interessanti...