Selles õpetuses õpime näidete abil Java FileInputStreami ja selle meetodeid.
FileInputStream
Klassi java.io
pakett saab kasutada andmete lugemiseks (baitides) failidest.
See laiendab InputStream
abstraktset klassi.
Enne kui õpime FileInputStream
, veenduge, et teaksite Java-faile.
Looge FileInputStream
Faili sisendvoo loomiseks peame java.io.FileInputStream
esmalt paketi importima . Kui pakett on imporditud, saate faili sisendvoo Java-s luua järgmiselt.
1. Failimise tee kasutamine
FileInputStream input = new FileInputStream(stringPath);
Siin oleme loonud sisendvoo, mis on seotud teega määratud failiga.
2. Faili objekti kasutamine
FileInputStream input = new FileInputStream(File fileObject);
Siin oleme loonud sisendvoo, mis lingitakse failiga, mille on täpsustanud fileObject
.
FileInputStreami meetodid
FileInputStream
Tasemega näeb implementation erinevaid meetodeid sisalduse funktsioon InputStream
tasemega.
loe () meetod
read()
- loeb failist ühe baidiread(byte() array)
- loeb failist baidid ja salvestab määratud massiiviread(byte() array, int start, int length)
- loeb failist pikkusega võrdse baitide arvu ja salvestab määratud massiivi alates positsiooni algusest
Oletame, et meil on järgmise sisuga fail nimega input.txt .
This is a line of text inside the file.
Proovime seda faili lugeda 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(); ) ) )
Väljund
Andmed failis: see on failirea tekstirida.
Ülaltoodud näites oleme loonud faili sisendvoo nimega sisend. Sisendvoog on lingitud failiga input.txt .
FileInputStream input = new FileInputStream("input.txt");
Failist andmete lugemiseks oleme read()
meetodit kasutanud while-tsükli sees.
saadaval () meetod
Saadaolevate baitide arvu saamiseks saame seda available()
meetodit kasutada . Näiteks,
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(); ) ) )
Väljund
Alguses saadaolevad baidid: 39 saadaval olevad baidid: 36
Ülaltoodud näites
- Kõigepealt kasutasime
available()
meetodit failide sisendvoos saadaolevate baitide arvu kontrollimiseks. - Seejärel oleme
read()
meetodit 3 korda kasutanud, et lugeda 3 baiti faili sisendvoost. - Nüüd, pärast baitide lugemist, oleme uuesti kontrollinud saadaolevaid baite. Seekord vähenesid saadaolevad baidid 3 võrra.
skip () meetod
Määratud baitide arvu ära viskamiseks ja vahele jätmiseks saame seda skip()
meetodit kasutada . Näiteks,
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(); ) ) )
Väljund
Sisendvoog pärast 5 baiti vahele jätmist: on failirea tekstirida.
Ülaltoodud näites oleme skip()
meetodi abil 5 baiti andmeid vahele jätnud faili sisendvoost. Seega ei loeta sisendvoost teksti "See" tähistavaid baite .
close () meetod
Faili sisendvoo sulgemiseks saame kasutada close()
meetodit. Kui close()
meetod on välja kutsutud, ei saa me andmete lugemiseks sisendvoogu kasutada.
Kõigis ülaltoodud näidetes oleme close()
failide sisendvoo sulgemiseks kasutanud meetodit.
Muud FileInputStreami meetodid
Meetodid | Kirjeldused |
---|---|
finalize() | tagab close() meetodi kutsumise |
getChannel() | tagastab FileChannel sisendvooga seotud objekti |
getFD() | tagastab sisendvooga seotud failikirjeldaja |
mark() | märkige sisendvoos asukoht, kuhu andmed on loetud |
reset() | tagastab juhtelemendi sisendvoos punkti, kuhu märk oli seatud |
Lisateabe saamiseks külastage Java FileInputStream (ametlik Java dokumentatsioon).