In deze tutorial zullen we met behulp van voorbeelden leren over Java FileInputStream en zijn methoden.
De FileInputStream
klasse van het java.io
pakket kan worden gebruikt om gegevens (in bytes) uit bestanden te lezen.
Het breidt de InputStream
abstracte klasse uit.
Voordat we iets leren FileInputStream
, moet u weten wat Java-bestanden zijn.
Maak een FileInputStream
Om een bestandsinvoerstroom te maken, moeten we eerst het java.io.FileInputStream
pakket importeren . Zodra we het pakket hebben geïmporteerd, kunnen we als volgt een bestandsinvoerstroom in Java maken.
1. Gebruik het pad naar het bestand
FileInputStream input = new FileInputStream(stringPath);
Hier hebben we een invoerstroom gemaakt die zal worden gekoppeld aan het bestand dat wordt gespecificeerd door het pad.
2. Gebruik een object van het bestand
FileInputStream input = new FileInputStream(File fileObject);
Hier hebben we een invoerstroom gemaakt die zal worden gekoppeld aan het bestand gespecificeerd door fileObject
.
Methoden van FileInputStream
De FileInputStream
klasse biedt implementaties voor verschillende methoden die in de InputStream
klasse aanwezig zijn.
read () Methode
read()
- leest een enkele byte uit het bestandread(byte() array)
- leest de bytes uit het bestand en slaat het op in de opgegeven arrayread(byte() array, int start, int length)
- leest het aantal bytes dat gelijk is aan de lengte uit het bestand en slaat het op in de opgegeven array vanaf het begin van de positie
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
Gegevens in het bestand: dit is een regel tekst in het bestand.
In het bovenstaande voorbeeld hebben we een bestandsinvoerstroom gemaakt met de naam input. De invoerstroom is gekoppeld aan het bestand input.txt .
FileInputStream input = new FileInputStream("input.txt");
Om gegevens uit het bestand te lezen, hebben we de read()
methode binnen de while-lus gebruikt.
available () Methode
Om het aantal beschikbare bytes te krijgen, kunnen we de available()
methode gebruiken. 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
Beschikbare bytes aan het begin: 39 Beschikbare bytes aan het einde: 36
In het bovenstaande voorbeeld
- We gebruiken eerst de
available()
methode om het aantal beschikbare bytes in de bestandsinvoerstroom te controleren. - We hebben de
read()
methode vervolgens 3 keer gebruikt om 3 bytes uit de bestandsinvoerstroom te lezen. - Nu, na het lezen van de bytes, hebben we opnieuw de beschikbare bytes gecontroleerd. Dit keer zijn de beschikbare bytes met 3 afgenomen.
skip () methode
Om het opgegeven aantal bytes te verwijderen en over te slaan, kunnen we de skip()
methode gebruiken. 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
Invoerstroom na het overslaan van 5 bytes: is een regel tekst in het bestand.
In het bovenstaande voorbeeld hebben we de skip()
methode gebruikt om 5 bytes aan gegevens uit de bestandsinvoerstroom over te slaan. Daarom worden de bytes die de tekst "This" vertegenwoordigen, niet gelezen uit de invoerstroom.
close () Methode
Om de bestandsinvoerstroom te sluiten, kunnen we de close()
methode gebruiken. Als de close()
methode eenmaal is aangeroepen, kunnen we de invoerstroom niet gebruiken om gegevens te lezen.
In alle bovenstaande voorbeelden hebben we de close()
methode gebruikt om de bestandsinvoerstroom te sluiten.
Andere methoden van FileInputStream
Methoden | Beschrijvingen |
---|---|
finalize() | zorgt ervoor dat de close() methode wordt aangeroepen |
getChannel() | geeft het object terug dat is FileChannel gekoppeld aan de invoerstroom |
getFD() | geeft de bestandsdescriptor terug die is gekoppeld aan de invoerstroom |
mark() | markeer de positie in de invoerstroom tot waar de gegevens zijn gelezen |
reset() | geeft het besturingselement terug naar het punt in de invoerstroom waar de markering was ingesteld |
Bezoek voor meer informatie Java FileInputStream (officiële Java-documentatie).