Јава БуффередИнпутСтреам (са примерима)

У овом упутству ћемо научити о Јава БуффередИнпутСтреам и његовим методама уз помоћ примера.

BufferedInputStreamКласа у java.ioпакету се користи са другим улазним струјама да ефикасније прочитати податке (у бајтовима).

Проширује InputStreamапстрактну класу.

Рад БуффередИнпутСтреам

BufferedInputStreamОдржава интерну пуфер 8192 бајтова .

Током операције читања BufferedInputStream, део бајтова се чита са диска и чува у унутрашњем баферу. А из интерног бафера бајтови се читају појединачно.

Дакле, број комуникације на диск је смањен. Због тога је читање бајтова брже помоћу BufferedInputStream.

Направите БуффередИнпутСтреам

Да бисмо креирали BufferedInputStream, прво морамо да увозимо java.io.BufferedInputStreamпакет. Једном када увозимо пакет овде, ево како можемо створити улазни ток.

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

У горњем примеру смо креирали BufferdInputStreamименовани бафер са FileInputStreamименованом датотеком.

Овде унутрашњи бафер има подразумевану величину од 8192 бајта. Међутим, можемо одредити и величину интерног бафера.

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

Ме успремник ће помоћи бржем читању бајтова из датотека.

Методе БуффередИнпутСтреам

BufferedInputStreamКласа обезбеђује имплементација за различитим методама присутни у InputStreamкласи.

реад () Метода

  • read() - чита један бајт из улазног тока
  • read(byte() arr) - чита бајтове из тока и чува у наведеном низу
  • read(byte() arr, int start, int length) - чита број бајтова једнак дужини из тока и чува у наведеном низу почев од почетка положаја

Претпоставимо да имамо датотеку која се зове инпут.ткт са следећим садржајем.

 This is a line of text inside the file. 

Покушајмо да читамо датотеку помоћу 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(); ) ) ) 

Оутпут

 Ово је ред текста унутар датотеке. 

У горњем примеру смо креирали ме успремљени улазни ток под називом буффер заједно са FileInputStream. Улазни ток повезан је са датотеком инпут.ткт .

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

Овде смо користили read()методу за читање низа бајтова из унутрашњег ме успремника ме успремника.

доступна () метода

Да бисмо добили број доступних бајтова у улазном току, можемо користити available()методу. На пример,

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

Оутпут

 Доступних бајтова на почетку: 39 Доступних бајтова на крају: 36 

У горњем примеру,

  1. Методу прво користимо available()за проверу броја доступних бајтова у улазном току.
  2. Затим смо read()методу користили 3 пута за читање 3 бајта из улазног тока.
  3. Сада, након читања бајтова, поново смо проверили доступне бајтове. Овај пут су се доступни бајтови смањили за 3.

метода прескочи ()

Да бисмо одбацили и прескочили наведени број бајтова, можемо користити skip()методу. На пример,

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

Оутпут

 Улазни ток након прескакања 5 бајтова: је ред текста унутар датотеке. 

У горњем примеру смо користили skip()методу да прескочимо 5 бајтова из улазног тока датотеке. Дакле, бајтова 'T', 'h', 'i', 's'и ' 'прескачу од улазног сигнала.

цлосе () Метода

Да бисмо затворили ме успремљени улазни ток, можемо користити close()методу. Једном када се close()метода позове, не можемо користити улазни ток за читање података.

Други методи пуферираног улазног тока

Методе Описи
mark() означите позицију у улазном току до које су подаци прочитани
reset() враћа контролу на тачку у улазном току где је постављена ознака

Да бисте сазнали више, посетите Јава БуффердИнпутСтреам (званична Јава документација).

Занимљиви Чланци...