English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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).
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.
La classe FileInputStream fornisce implementazioni di diversi metodi nella classe InputStream.
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.
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,
Abbiamo prima utilizzato il metodo available() per controllare il numero di byte disponibili nel flusso di input del file.
Poi, abbiamo utilizzato il metodo read() 3 volte per leggere 3 byte dal flusso di input del file.
Ora, dopo aver letto i byte, abbiamo controllato nuovamente i byte disponibili. Questa volta, i byte disponibili sono diminuiti di 3.
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.
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.
Metodo | Descrizione 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 |