Java FileInputStream-klasse
Java FileInputStream-klasse
In deze zelfstudie leren we over Java FileInputStream en zijn methoden aan de hand van voorbeelden.
De FileInputStream
klasse van de java.io
pakket kan worden gebruikt om gegevens (in bytes) uit bestanden te lezen.
Het verlengt de InputStream
abstracte klas.
Voordat we meer te weten komen over FileInputStream
, zorg ervoor dat u op de hoogte bent van Java-bestanden.
Maak een FileInputStream
Om een bestandsinvoerstroom te maken, moeten we de java.io.FileInputStream
. importeren pakket eerst. Zodra we het pakket hebben geïmporteerd, kunnen we als volgt een bestandsinvoerstroom in Java maken.
FileInputStream input = new FileInputStream(stringPath);
Hier hebben we een invoerstroom gemaakt die wordt gekoppeld aan het bestand dat is opgegeven door het pad .
FileInputStream input = new FileInputStream(File fileObject);
Hier hebben we een invoerstroom gemaakt die wordt gekoppeld aan het bestand gespecificeerd door fileObject
.
Methoden van FileInputStream
De FileInputStream
class biedt implementaties voor verschillende methoden die aanwezig zijn in de InputStream
klasse.
read()-methode
read()
- leest een enkele byte uit het bestandread(byte[] array)
- leest de bytes uit het bestand en slaat op in de opgegeven arrayread(byte[] array, int start, int length)
- leest het aantal bytes gelijk aan lengte uit het bestand en wordt opgeslagen in de opgegeven array vanaf de positie start
Stel dat we een bestand hebben met de naam input.txt met de volgende inhoud.
This is a line of text inside the file.
Laten we proberen dit bestand te lezen met 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();
}
}
}
Uitvoer
Data in the file: This is a line of text inside the file.
In het bovenstaande voorbeeld hebben we een bestandsinvoerstroom gemaakt met de naam input . De invoerstroom is gekoppeld aan de input.txt bestand.
FileInputStream input = new FileInputStream("input.txt");
Om gegevens uit het bestand te lezen, hebben we de read()
. gebruikt methode binnen de while-lus.
beschikbare() methode
Om het aantal beschikbare bytes te krijgen, kunnen we de available()
. gebruiken methode. Bijvoorbeeld,
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();
}
}
}
Uitvoer
Available bytes at the beginning: 39 Available bytes at the end: 36
In het bovenstaande voorbeeld,
- We gebruiken eerst de
available()
methode om het aantal beschikbare bytes in de bestandsinvoerstroom te controleren. - We hebben toen de
read()
. gebruikt methode 3 keer om 3 bytes uit de bestandsinvoerstroom te lezen. - Na het lezen van de bytes hebben we nu opnieuw de beschikbare bytes gecontroleerd. Deze keer zijn de beschikbare bytes met 3 afgenomen.
skip()-methode
Om het opgegeven aantal bytes te negeren en over te slaan, kunnen we de skip()
. gebruiken methode. Bijvoorbeeld,
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();
}
}
}
Uitvoer
Input Stream after skipping 5 bytes: is a line of text inside the file.
In het bovenstaande voorbeeld hebben we de skip()
. gebruikt methode om 5 bytes aan gegevens uit de bestandsinvoerstroom over te slaan. Vandaar dat de bytes die de tekst "This " . vertegenwoordigen wordt niet gelezen uit de invoerstroom.
close()-methode
Om de bestandsinvoerstroom te sluiten, kunnen we de close()
. gebruiken methode. Zodra de close()
methode wordt aangeroepen, kunnen we de invoerstroom niet gebruiken om gegevens te lezen.
In alle bovenstaande voorbeelden hebben we de close()
. gebruikt methode om de bestandsinvoerstroom te sluiten.
Andere methoden van FileInputStream
Methoden | Beschrijvingen |
---|---|
finalize() | zorgt ervoor dat de close() methode heet |
getChannel() | retourneert het object van FileChannel gekoppeld aan de invoerstroom |
getFD() | retourneert de bestandsdescriptor die is gekoppeld aan de invoerstroom |
mark() | markeer de positie in de invoerstroom tot waar gegevens zijn gelezen |
reset() | geeft de besturing terug naar het punt in de invoerstroom waar de markering is ingesteld |
Ga voor meer informatie naar Java FileInputStream (officiële Java-documentatie).
Java