English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Java 基礎教程

Controllo di flusso Java

Java Array

Java Orientato agli oggetti (I)

Java Orientato agli oggetti (II)

Java Orientato agli oggetti (III)

Java 异常处理

Java List

Java Queue (coda)

Java Map collection

Java Set collection

Java Input/Output (I/O)

Java Reader/Writer

Altri argomenti Java

Classe Java FileInputStream

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

La classe FileInputStream del pacchetto java.io può essere utilizzata per leggere dati da un file (in byte).

Erede dell'astrazione InputStream.

Prima di studiare FileInputStream, assicurati di aver già compresoJava File (file).

Creare un FileInputStream

Per creare uno stream di input di file, dobbiamo prima importare il pacchetto java.io.FileInputStream. Dopo aver importato il pacchetto, possiamo utilizzare Java per creare uno stream di input di file.

1. Utilizzo del percorso del file

FileInputStream input = new FileInputStream(stringPath);

In questo caso, abbiamo creato uno stream di input che si collegherà al percorso del file specificato.

2. Utilizzo dell'oggetto file

FileInputStream input = new FileInputStream(File fileObject);

In questo caso, abbiamo creato uno stream di input che si collegherà al file specificato da fileObject.

Metodi di FileInputStream

La classe FileInputStream fornisce implementazioni di diversi metodi nella classe InputStream.

Metodo read()

  • read() - Legge un byte dal file

  • read(byte[] array) - Legge byte dal file e li memorizza nell'array specificato

  • read(byte[] array, int start, int length) - Legge da file un numero di byte uguale a length e lo memorizza nell'array specificato a partire dalla posizione start

Supponiamo di avere un file chiamatoinput.txtIl file, che contiene il seguente contenuto.

This is a line of text inside the file.

Lasciamo che proviamo a leggere questo file utilizzando FileInputStream.

import java.io.FileInputStream;
public class Main {
  public static void main(String args[]) {
     try {
        FileInputStream input = new FileInputStream("input.txt");
        System.out.println("文件中的数据: ");
        // leggere il primo byte
        int i = input.read();
       while(i != -1) {
           System.out.print((char)i);
           // leggere il byte successivo dal file
           i = input.read();
        }
        input.close();
     }
     catch(Exception e) {}}
        e.getStackTrace();
     }
  }
}

Risultato di output

Dati del file:
This is a line of text inside the file.

Nell'esempio sopra riportato, abbiamo creato un flusso di input di file chiamato input. Il flusso di input è connesso ainput.txtCollegamento file.

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

Per leggere i dati dal file, abbiamo utilizzato il metodo read() nel ciclo while.

Metodo available()

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

import java.io.FileInputStream;
public class Main {
   public static void main(String args[]) {
      try {
        // Supponiamo che il file input.txt contenga il seguente testo
        // Questo è una riga di testo nel file.
         FileInputStream input = new FileInputStream("input.txt");
         // restituisce il numero di byte disponibili
         System.out.println("Numero di byte disponibili all'inizio: " + input.available());
         // legge 3 byte dal file
         input.read();
         input.read();
         input.read();
         // restituisce il numero di byte disponibili
         System.out.println("Numero di byte disponibili alla fine: " + input.available());
         input.close();
      }
      catch (Exception e) {
         e.getStackTrace();
      }
   }
}

Risultato di output

Numero di byte disponibili all'inizio: 39
Numero di byte disponibili alla fine: 36

Nell'esempio sopra riportato,

  1. Abbiamo prima utilizzato il metodo available() per controllare il numero di byte disponibili nel flusso di input del file.

  2. Poi, abbiamo utilizzato il metodo read() 3 volte per leggere 3 byte dal flusso di input del file.

  3. Ora, dopo aver letto i byte, abbiamo controllato nuovamente i byte disponibili. Questa volta, i byte disponibili sono diminuiti di 3.

Metodo skip()

Per scartare e saltare il numero specificato di byte, puoi utilizzare il metodo skip(). Ad esempio

import java.io.FileInputStream;
public class Main {
   public static void main(String args[]) {
      try {
        // Supponiamo che il file input.txt contenga il seguente testo
        // Questo è una riga di testo nel file.
         FileInputStream input = new FileInputStream("input.txt");
         // salta 5 byte
         input.skip(5);
         System.out.println("Salta 5 byte di input stream:");
         // leggere il primo byte
         int i = input.read();
         while (i != -1) {
            System.out.print((char) i);
            // leggere il byte successivo dal file
            i = input.read();
         }
         // metodo close()
         input.close();
      }
      catch (Exception e) {
         e.getStackTrace();
      }
   }
}

Risultato di output

Salto di flusso di input di 5 byte:
è una riga di testo all'interno del file.

Negli esempi sopra riportati, abbiamo utilizzato il metodo skip() per saltare 5 byte di dati dal flusso di input di file. Di conseguenza, non verranno letti i dati che rappresentano il testo“This”dei byte.

Metodo close()

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

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

Altri metodi di FileInputStream

MetodoDescrizione del contenuto
finalize()Assicurarsi che il metodo close() venga chiamato
getChannel()Restituire l'oggetto FileChannel associato al flusso di input
getFD()Restituire il descrittore di file associato al flusso di input
mark()Marcare la posizione dei dati letti nel flusso di input
reset()Restituire il controllo del controllo al punto di marcia impostato nel flusso di input