De klasse FileInputStream in Java wordt gebruikt om gegevens uit een bestand te lezen in de vorm van bytes. Het is ideaal voor het lezen van binaire gegevens zoals afbeeldingen of audiobestanden. Voor het lezen van tekstbestanden is het beter om te gebruiken Bestandslezer.
- Directe toegang: Het leest de bestandsinhoud rechtstreeks van de schijf zonder buffering
- Platformonafhankelijk: Het kan op elk besturingssysteem werken
Verklaring
De klasse FileInputStream breidt de Invoerstroom class, wat betekent dat het methoden overneemt voor het lezen van onbewerkte bytegegevens uit bestanden.
openbare klasse FileInputStream breidt InputStream uit
Voorbeeld: FileInputStream-klasse om gegevens uit een bestand te lezen.
Javaimport java.io.*; public class Geeks{ public static void main(String[] args){ // Use try-with-resources to automatically close the // stream try (FileInputStream fi = new FileInputStream('file1.txt')) { // Display file channel information System.out.println('Channel: ' + fi.getChannel()); // Display file descriptor System.out.println('File Descriptor: ' + fi.getFD()); // Show available bytes in the stream System.out.println('Number of remaining bytes: ' + fi.available()); // Skip first few bytes fi.skip(4); System.out.println('File Contents:'); // Read and print file content int ch; while ((ch = fi.read()) != -1) { System.out.print((char)ch); } } catch (FileNotFoundException e) { System.out.println( 'File not found: Ensure 'file1.txt' exists in the working directory.'); } catch (IOException e) { System.out.println( 'An error occurred while reading the file: ' + e.getMessage()); } } }
Uitgang:
UitvoerConstructeurs van FileInputStream-klasse
1. FileInputStream(tekenreeksnaam)
Creëert een invoerbestandsstroom om te lezen uit een bestand met de opgegeven naam.
FileInputStream fi = nieuwe FileInputStream('voorbeeld.txt');
2. FileInputStream(bestandsbestand)
Creëert een invoerbestandsstroom om te lezen uit het opgegeven File-object.
Bestand f = nieuw bestand('voorbeeld.txt');
FileInputStream fi = nieuwe FileInputStream(f);
3. FileInputStream(FileDescriptorfdobj)
Creëert een invoerbestandsstroom om te lezen uit de opgegeven bestandsdescriptor.
FileDescriptor fd = BestandDescriptor.in;
FileInputStream fi = nieuwe FileInputStream(fd);
Maak een bestand met de naam file.txt in uw projectmap met de volgende inhoud:
Javadit is mijn eerste code
dit is mijn tweede code
import java.io.*; public class Geeks { public static void main(String[] args) { // Use try-with-resources to automatically close the stream try (FileInputStream fi = new FileInputStream('file1.txt')) { // Display file channel information System.out.println('Channel: ' + fi.getChannel()); // Display file descriptor System.out.println('File Descriptor: ' + fi.getFD()); // Illustrating available method System.out.println('Number of remaining bytes: ' + fi.available()); // Illustrating skip() method fi.skip(4); System.out.println('File Contents:'); // Reading characters from FileInputStream int ch; while ((ch = fi.read()) != -1) { System.out.print((char)ch); } } catch (FileNotFoundException e) { System.out.println( 'File not found: Ensure 'file1.txt' exists in the working directory.'); } catch (IOException e) { System.out.println( 'An error occurred while reading the file: ' + e.getMessage()); } } }
Uitgang:
UitvoerMethoden van Java FileInputStream-klasse
| Methoden | Actie uitgevoerd |
|---|---|
| beschikbaar() | Retourneert een schatting van het aantal resterende bytes dat kan worden gelezen (of overgeslagen) uit deze invoerstroom. |
| dichtbij() | Sluit deze bestandsinvoerstroom en geeft alle systeembronnen vrij die aan de stroom zijn gekoppeld. |
| finaliseren() | Zorgt ervoor dat de close-methode van deze bestandsinvoerstroom wordt aangeroepen als er geen verwijzingen meer naar zijn. |
| getChannel() | Retourneert het unieke FileChannel-object dat aan deze bestandsinvoerstroom is gekoppeld. |
| getFD() | Retourneert het FileDescriptor-object dat de verbinding vertegenwoordigt met het daadwerkelijke bestand in het bestandssysteem dat door deze FileInputStream wordt gebruikt. |
| lezen() | Leest een byte aan gegevens uit deze invoerstroom |
| lees(byte[] b) | Leest tot b.lengte bytes aan gegevens uit deze invoerstroom in een array van bytes. |
| lezen(byte[] b int uit int len) | Leest maximaal aantal bytes aan gegevens uit deze invoerstroom in een array van bytes. |
| overslaan() | Slaat over en verwijdert n bytes aan gegevens uit de invoerstroom |