Java BufferedInputStream (ar piemēriem)

Šajā apmācībā mēs ar piemēru palīdzību uzzināsim par Java BufferedInputStream un tās metodēm.

BufferedInputStreamNo klases java.iopaketē tiek lietots kopā ar citiem ievades plūsmām nolasīt datus (baitos) efektīvāk.

Tas paplašina InputStreamabstrakto klasi.

BufferedInputStream darbs

BufferedInputStreamUztur iekšējo buferi 8192 baitu .

Veicot lasīšanas darbību BufferedInputStream, no diska tiek nolasīts baitu gabals un saglabāts iekšējā buferī. Un no iekšējā bufera baiti tiek nolasīti atsevišķi.

Tādējādi tiek samazināts sakaru skaits uz disku. Tāpēc baitu lasīšana ir ātrāka, izmantojot BufferedInputStream.

Izveidojiet BufferedInputStream

Lai izveidotu a BufferedInputStream, mums vispirms ir jāimportē java.io.BufferedInputStreampakete. Pēc pakotnes importēšanas šeit mēs varam izveidot ievades straumi.

 // Creates a FileInputStream FileInputStream file = new FileInputStream(String path); // Creates a BufferedInputStream BufferedInputStream buffer = new BufferInputStream(file); 

Iepriekš minētajā piemērā mēs esam izveidojuši BufferdInputStreamnosauktu buferi ar FileInputStreamnosaukto failu.

Šeit iekšējā bufera noklusējuma lielums ir 8192 baiti. Tomēr mēs varam norādīt arī iekšējā bufera lielumu.

 // Creates a BufferedInputStream with specified size internal buffer BufferedInputStream buffer = new BufferInputStream(file, int size); 

Buferis palīdzēs ātrāk nolasīt baitus no failiem.

BufferedInputStream metodes

BufferedInputStreamKlase nodrošina implementācijas dažādām metodēm prezentēt šajā InputStreamklasē.

lasīt () Metode

  • read() - nolasa vienu baitu no ievades straumes
  • read(byte() arr) - nolasa baitus no straumes un glabā norādītajā masīvā
  • read(byte() arr, int start, int length) - nolasa baitu skaitu, kas vienāds ar garumu no straumes, un glabā norādītajā masīvā, sākot no pozīcijas sākuma

Pieņemsim, ka mums ir fails ar nosaukumu input.txt ar šādu saturu.

 This is a line of text inside the file. 

Mēģināsim lasīt failu, izmantojot BufferedInputStream.

 import java.io.BufferedInputStream; import java.io.FileInputStream; class Main ( public static void main(String() args) ( try ( // Creates a FileInputStream FileInputStream file = new FileInputStream("input.txt"); // Creates a BufferedInputStream BufferedInputStream input = new BufferedInputStream(file); // Reads first byte from file 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(); ) ) ) 

Rezultāts

 Šī ir teksta rindiņa faila iekšpusē. 

Iepriekš minētajā piemērā mēs esam izveidojuši buferētu ievades plūsmu ar nosaukumu buferis kopā ar FileInputStream. Ievades straume ir saistīta ar failu input.txt .

 FileInputStream file = new FileInputStream("input.txt"); BufferedInputStream buffer = new BufferedInputStream(file); 

Šeit mēs izmantojām read()metodi baitu masīva nolasīšanai no buferētā lasītāja iekšējā bufera.

pieejama () metode

Lai iegūtu pieejamo baitu skaitu ievades straumē, mēs varam izmantot available()metodi. Piemēram,

 import java.io.FileInputStream; import java.io.BufferedInputStream; 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 file = new FileInputStream("input.txt"); // Creates a BufferedInputStream BufferedInputStream buffer = new BufferedInputStream(file); // Returns the available number of bytes System.out.println("Available bytes at the beginning: " + buffer.available()); // Reads bytes from the file buffer.read(); buffer.read(); buffer.read(); // Returns the available number of bytes System.out.println("Available bytes at the end: " + buffer.available()); buffer.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) ) 

Rezultāts

 Pieejamie baiti sākumā: 39 Pieejamie baiti beigās: 36 

Iepriekš minētajā piemērā

  1. Vispirms mēs izmantojam available()metodi, lai pārbaudītu pieejamo baitu skaitu ievades straumē.
  2. Tad mēs esam izmantojuši read()metodi 3 reizes, lai nolasītu 3 baitus no ievades straumes.
  3. Pēc baitu lasīšanas mēs atkal esam pārbaudījuši pieejamos baitus. Šoreiz pieejamie baiti samazinājās par 3.

izlaist () metode

Lai izmestu un izlaistu norādīto baitu skaitu, mēs varam izmantot skip()metodi. Piemēram,

 import java.io.FileInputStream; import java.io.BufferedInputStream; 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 file = new FileInputStream("input.txt"); // Creates a BufferedInputStream BufferedInputStream buffer = new BufferedInputStream(file); // Skips the 5 bytes buffer.skip(5); System.out.println("Input stream after skipping 5 bytes:"); // Reads the first byte from input stream int i = buffer.read(); while (i != -1) ( System.out.print((char) i); // Reads next byte from the input stream i = buffer.read(); ) // Closes the input stream buffer.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) ) 

Rezultāts

 Ievades straume pēc 5 baitu izlaišanas: ir teksta rindiņa faila iekšpusē. 

Iepriekš minētajā piemērā mēs izmantojām skip()metodi, lai izlaistu 5 baitus no faila ievades straumes. Līdz ar to, ka baiti 'T', 'h', 'i', 's'un ' 'ir izlaidis no ieejas plūsmā.

aizvērt () metode

Lai aizvērtu buferēto ievades straumi, mēs varam izmantot close()metodi. Kad close()metode ir izsaukta, mēs nevaram izmantot ievades straumi, lai lasītu datus.

Citas BufferedInputStream metodes

Metodes Apraksti
mark() atzīmējiet ievades straumes pozīciju, līdz kurai dati ir nolasīti
reset() atgriež vadību tajā ievades straumes punktā, kurā tika iestatīta atzīme

Lai uzzinātu vairāk, apmeklējiet Java BufferdInputStream (oficiālā Java dokumentācija).

Interesanti raksti...