În acest tutorial, vom afla despre Java BufferedInputStream și metodele sale cu ajutorul unor exemple.
BufferedInputStream
Clasa a java.io
pachetului este utilizat cu alte fluxuri de intrare pentru a citi datele (în bytes) mai eficient.
Extinde InputStream
clasa abstractă.
Funcționarea BufferedInputStream
BufferedInputStream
Menține un intern tampon de 8192 octeți .
În timpul operației de citire BufferedInputStream
, o bucată de octeți este citită de pe disc și stocată în buffer-ul intern. Și din bufferul intern octeții sunt citiți individual.
Prin urmare, numărul de comunicații pe disc este redus. Acesta este motivul pentru care citirea octeților este mai rapidă folosind BufferedInputStream
.
Creați un BufferedInputStream
Pentru a crea un BufferedInputStream
, trebuie să importăm mai java.io.BufferedInputStream
întâi pachetul. Odată ce am importat pachetul, iată cum putem crea fluxul de intrare.
// Creates a FileInputStream FileInputStream file = new FileInputStream(String path); // Creates a BufferedInputStream BufferedInputStream buffer = new BufferInputStream(file);
În exemplul de mai sus, am creat un BufferdInputStream
tampon numit cu FileInputStream
fișierul numit.
Aici, tamponul intern are dimensiunea implicită de 8192 octeți. Cu toate acestea, putem specifica și dimensiunea bufferului intern.
// Creates a BufferedInputStream with specified size internal buffer BufferedInputStream buffer = new BufferInputStream(file, int size);
Tamponul va ajuta la citirea mai rapidă a octeților din fișiere.
Metode BufferedInputStream
BufferedInputStream
Clasa oferă implementări pentru diferite metode prezintă în InputStream
clasă.
read () Metodă
read()
- citește un singur octet din fluxul de intrareread(byte() arr)
- citește octeți din flux și stochează în matricea specificatăread(byte() arr, int start, int length)
- citește numărul de octeți egal cu lungimea fluxului și stochează în matricea specificată începând de la începutul poziției
Să presupunem că avem un fișier numit input.txt cu următorul conținut.
This is a line of text inside the file.
Să încercăm să citim fișierul folosind 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(); ) ) )
Ieșire
Aceasta este o linie de text din interiorul fișierului.
În exemplul de mai sus, am creat un flux de intrare buffer numit buffer împreună cu FileInputStream
. Fluxul de intrare este legat de fișierul input.txt .
FileInputStream file = new FileInputStream("input.txt"); BufferedInputStream buffer = new BufferedInputStream(file);
Aici, am folosit read()
metoda pentru a citi o serie de octeți din buffer-ul intern al cititorului buffered.
disponibil () Metodă
Pentru a obține numărul de octeți disponibili în fluxul de intrare, putem folosi available()
metoda. De exemplu,
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(); ) ) )
Ieșire
Octiți disponibili la început: 39 Octiți disponibili la sfârșit: 36
În exemplul de mai sus,
- Mai întâi folosim
available()
metoda pentru a verifica numărul de octeți disponibili în fluxul de intrare. - Apoi, am folosit
read()
metoda de 3 ori pentru a citi 3 octeți din fluxul de intrare. - Acum, după ce am citit octeții, am verificat din nou octeții disponibili. De această dată, octeții disponibili au scăzut cu 3.
skip () Metodă
Pentru a elimina și a omite numărul specificat de octeți, putem folosi skip()
metoda. De exemplu,
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(); ) ) )
Ieșire
Fluxul de intrare după omiterea a 5 octeți: este o linie de text din fișier.
În exemplul de mai sus, am folosit skip()
metoda pentru a sări peste 5 octeți din fluxul de intrare a fișierului. Prin urmare, octeții 'T'
, 'h'
, 'i'
, 's'
și ' '
sunt omise din fluxul de intrare.
close () Metoda
Pentru a închide fluxul de intrare tamponat, putem folosi close()
metoda. Odată close()
apelată metoda, nu putem folosi fluxul de intrare pentru a citi datele.
Alte metode ale BufferedInputStream
Metode | Descrieri |
---|---|
mark() | marcați poziția în fluxul de intrare până la care au fost citite datele |
reset() | returnează controlul la punctul din fluxul de intrare unde a fost setată marca |
Pentru a afla mai multe, vizitați Java BufferdInputStream (documentație oficială Java).