Java FileInputStream (esimerkkien kanssa)

Tässä opetusohjelmassa opitaan Java FileInputStreamista ja sen menetelmistä esimerkkien avulla.

FileInputStreamLuokan java.iopaketti voidaan käyttää tietojen lukemiseen (tavuina) tiedostoista.

Se laajentaa InputStreamabstraktia luokkaa.

Ennen kuin opimme FileInputStream, muista tietää Java-tiedostoista.

Luo FileInputStream

Tiedoston syöttövirran luomiseksi meidän on java.io.FileInputStreamensin tuotava paketti. Kun tuot paketin, voimme luoda tiedostojen syöttövirran Java-tiedostoon seuraavasti.

1. Tiedoston polun käyttäminen

 FileInputStream input = new FileInputStream(stringPath); 

Tässä olemme luoneet tulovirran, joka linkitetään polun määrittelemään tiedostoon.

2. Tiedoston objektin käyttäminen

 FileInputStream input = new FileInputStream(File fileObject); 

Tässä olemme luoneet tulovirran, joka linkitetään käyttäjän määrittelemään tiedostoon fileObject.

FileInputStreamin menetelmät

FileInputStreamLuokka antaa toteutuksia eri menetelmiä esittää, että InputStreamluokan.

read () Menetelmä

  • read() - lukee yhden tavun tiedostosta
  • read(byte() array) - lukee tavut tiedostosta ja tallentaa määritettyyn taulukkoon
  • read(byte() array, int start, int length) - lukee tiedostosta pituuden verran tavujen määrän ja tallentaa määrätyn matriisin paikan alusta alkaen

Oletetaan, että meillä on tiedosto nimeltä input.txt, jolla on seuraava sisältö.

 This is a line of text inside the file. 

Yritetään lukea tämä tiedosto 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(); ) ) ) 

Tuotos

 Tiedot tiedostossa: Tämä on tekstirivi tiedoston sisällä. 

Yllä olevassa esimerkissä olemme luoneet syötteen nimisen tiedoston syötevirran. Syöttövirta linkitetään input.txt- tiedostoon.

 FileInputStream input = new FileInputStream("input.txt"); 

Tietojen lukemiseksi tiedostosta olemme käyttäneet read()menetelmää while-silmukan sisällä.

käytettävissä () Menetelmä

Saadaksesi käytettävissä olevien tavujen määrän voimme käyttää available()menetelmää. Esimerkiksi,

 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(); ) ) ) 

Tuotos

 Käytettävissä olevat tavut alussa: 39 Käytettävissä olevat tavut lopussa: 36 

Yllä olevassa esimerkissä

  1. Käytämme available()menetelmää ensin tiedostotulovirran käytettävissä olevien tavujen määrän tarkistamiseen.
  2. Sitten olemme käyttäneet read()menetelmää 3 kertaa lukemaan 3 tavua tiedoston syöttövirrasta.
  3. Luettuamme tavut olemme nyt tarkistaneet käytettävissä olevat tavut. Tällä kertaa käytettävissä olevat tavut laskivat 3: lla.

skip () Menetelmä

Hylätään ja ohitetaan määritetty määrä tavuja, voimme käyttää skip()menetelmää. Esimerkiksi,

 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(); ) ) ) 

Tuotos

 Syöttövirta 5 tavun ohittamisen jälkeen: on tekstirivi tiedoston sisällä. 

Yllä olevassa esimerkissä olemme käyttäneet skip()menetelmää ohittaa 5 tavua tietoja tiedoston syöttövirrasta. Täten tekstiä "Tämä" edustavia tavuja ei lueta tulovirrasta.

sulje () Menetelmä

Tiedoston syöttövirran sulkemiseksi voimme käyttää close()menetelmää. Kun close()menetelmä on kutsuttu, emme voi käyttää syötevirtaa tietojen lukemiseen.

Kaikissa yllä olevissa esimerkeissä olemme käyttäneet close()menetelmää tiedoston syöttövirran sulkemiseen.

Muut FileInputStreamin menetelmät

Menetelmät Kuvaukset
finalize() varmistaa, että close()menetelmää kutsutaan
getChannel() palauttaa FileChanneltulovirtaan liittyvän objektin
getFD() palauttaa syötevirtaan liittyvän tiedostokuvaajan
mark() merkitse sijainti syötevirrassa, johon tiedot on luettu
reset() palauttaa ohjauksen tulovirran pisteeseen, johon merkki asetettiin

Lisätietoja on Java FileInputStream -sivustossa (virallinen Java-dokumentaatio).

Mielenkiintoisia artikkeleita...