Tässä opetusohjelmassa opitaan Java FileInputStreamista ja sen menetelmistä esimerkkien avulla.
FileInputStream
Luokan java.io
paketti voidaan käyttää tietojen lukemiseen (tavuina) tiedostoista.
Se laajentaa InputStream
abstraktia luokkaa.
Ennen kuin opimme FileInputStream
, muista tietää Java-tiedostoista.
Luo FileInputStream
Tiedoston syöttövirran luomiseksi meidän on java.io.FileInputStream
ensin 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
FileInputStream
Luokka antaa toteutuksia eri menetelmiä esittää, että InputStream
luokan.
read () Menetelmä
read()
- lukee yhden tavun tiedostostaread(byte() array)
- lukee tavut tiedostosta ja tallentaa määritettyyn taulukkoonread(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ä
- Käytämme
available()
menetelmää ensin tiedostotulovirran käytettävissä olevien tavujen määrän tarkistamiseen. - Sitten olemme käyttäneet
read()
menetelmää 3 kertaa lukemaan 3 tavua tiedoston syöttövirrasta. - 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 FileChannel tulovirtaan 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).