Java FileInputStream (koos näidetega)

Selles õpetuses õpime näidete abil Java FileInputStreami ja selle meetodeid.

FileInputStreamKlassi java.iopakett saab kasutada andmete lugemiseks (baitides) failidest.

See laiendab InputStreamabstraktset klassi.

Enne kui õpime FileInputStream, veenduge, et teaksite Java-faile.

Looge FileInputStream

Faili sisendvoo loomiseks peame java.io.FileInputStreamesmalt 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

FileInputStreamTasemega näeb implementation erinevaid meetodeid sisalduse funktsioon InputStreamtasemega.

loe () meetod

  • read() - loeb failist ühe baidi
  • read(byte() array) - loeb failist baidid ja salvestab määratud massiivi
  • read(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

  1. Kõigepealt kasutasime available()meetodit failide sisendvoos saadaolevate baitide arvu kontrollimiseks.
  2. Seejärel oleme read()meetodit 3 korda kasutanud, et lugeda 3 baiti faili sisendvoost.
  3. 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 FileChannelsisendvooga 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).

Huvitavad Artiklid...