Java FileInputStream: Praktische gids met codevoorbeelden
Java FileInputStream-klasse
Deze tutorial begeleidt je door Java's FileInputStream, met de kernmethoden, praktisch gebruik en real-world voorbeelden.
Inleiding
De FileInputStream-klasse, onderdeel van het java.io-pakket, stelt je in staat om rauwe bytedata uit bestanden te lezen. Het breidt de abstracte InputStream-klasse uit en biedt een concrete implementatie voor bestands-I/O.
Een FileInputStream aanmaken
Importeer de klasse en instantieer het met een bestandspad of een File-object.
1. Met een bestandspad
FileInputStream input = new FileInputStream("pad/naar/bestand.txt");
Dit opent een stream gekoppeld aan het bestand op het gespecificeerde pad.
2. Met een File-object
File bestand = new File("bestand.txt");
FileInputStream input = new FileInputStream(bestand);
Kernmethoden van FileInputStream
De klasse implementeert alle abstracte methoden van InputStream en voegt er enkele eigen toe. Hieronder de meest gebruikte:
read()
int read()– leest een enkele byte en retourneert deze alsint(of-1bij EOF)int read(byte[] b)– vult de meegeleverde array met bytesint read(byte[] b, int off, int len)– leest maximaallenbytes inbbeginnend bij offsetoff
Voorbeeld: een tekstbestand byte-voor-byte lezen.
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 het bestand:");
int byteGelezen;
while ((byteGelezen = input.read()) != -1) {
System.out.print((char) byteGelezen);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
Output
Data in het bestand: Dit is een regel tekst in het bestand.
available()
Retourneert het aantal bytes dat gelezen kan worden zonder te blokkeren.
try (FileInputStream input = new FileInputStream("input.txt")) {
System.out.println("Beschikbaar aan start: " + input.available());
input.read();
input.read();
input.read();
System.out.println("Beschikbaar na 3 reads: " + input.available());
}
Output
Beschikbaar aan start: 39 Beschikbaar na 3 reads: 36
skip()
Verplaatst de streampositie met een gespecificeerd aantal bytes, deze worden overgeslagen.
try (FileInputStream input = new FileInputStream("input.txt")) {
input.skip(5); // sla "Dit " over
int byteGelezen;
while ((byteGelezen = input.read()) != -1) {
System.out.print((char) byteGelezen);
}
}
Output
is een regel tekst in het bestand.
close()
Sluit de stream en geeft systeembronnen vrij. Een try-with-resources-blok (zoals hierboven getoond) zorgt ervoor dat close() automatisch wordt aangeroepen.
Extra FileInputStream-methoden
| Methode | Beschrijving |
|---|---|
finalize() | Zorgt ervoor dat close() wordt aangeroepen vóór garbage collection |
getChannel() | Retourneert de FileChannel geassocieerd met de stream |
getFD() | Geeft de onderliggende bestandsdescriptor |
mark(int readlimit) | Markeert de huidige positie voor later resetten |
reset() | Zet de stream terug naar de laatste gemarkeerde positie |
Voor dieper inzicht, raadpleeg de officiële Java-documentatie: Java FileInputStream (officiële Java-documentatie).
Java
- Java's final-sleutelwoord begrijpen: variabelen, methoden en klassen
- Java instanceof operator: een uitgebreide gids
- Java geneste static classes begrijpen: gebruik, verschillen en voorbeelden
- Java anonieme inner classes meesteren: definitie, syntax en praktische voorbeelden
- Java Singleton patroon uitgelegd: hoe veilig te implementeren en gebruiken
- Java Reflectie meesteren: klassen, methoden en velden inspecteren tijdens runtime
- Java ObjectOutputStream: Serialisatie, methoden en praktische voorbeelden
- Java BufferedReader: Efficiënte karakter-stream-afhandeling
- Java Scanner: Uitgebreide gids met praktische voorbeelden
- Java Generics: Herbruikbare, type-veilige code bouwen
- Java-bestandsbewerkingen onder de knie krijgen met java.io – Aanmaken, lezen, schrijven en verwijderen