Die Anleitung zu Java BufferedInputStream
1. BufferedInputStream
BufferedInputStream ist eine Unterklasse von InputStream, mit der das Lesen von Text aus binären Eingabestreams vereinfacht und die Programmleistung verbessert wird.
- InputStream
- FileInputStream
- ByteArrayInputStream
- PushbackInputStream
- PipedInputStream
- SequenceInputStream
- DataInputStream
- FilterInputStream
- FilterInputStream
- ObjectInputStream
- AudioInputStream
- CheckedInputStream
- DigestInputStream
- DeflaterInputStream
- CipherInputStream
Das Funktionsprinzip von BufferedInputStream sieht wie folgt aus:
BufferedInputStream umschließt ein Objekt InputStream, das automatisch die Daten aus dem Ursprung (z.B die Datei) liest und im buffer von BufferedInputStream speichert.
BufferedInputStream überschreibt die Methoden, die von seiner übergeordneten Klasse erben, wie read(), read(byte[]),... um sicherzustellen, dass sie die Daten aus dem buffer sondern nicht aus dem Ursprung (z.B Datei) bearbeiten.
Der oben erwähnte sogenannte "buffer" ist eigentlich nur ein Array byte. Das Objekt InputStream (vom BufferedInputStream) liest automatisch bytes vom Ursprung, die in diesem Array gespeichert werden sollen.
BufferedInputStream liest bytes aus dem Array buffer und gibt die gelesenen Position frei. Die freigegebenen Positionen werden verwendet um die neu gelesenen bytes vom Ursprung zu speichern.
BufferedInputStream constructors
BufferedInputStream(InputStream in, int size)
BufferedInputStream(InputStream in)
- Der Kontructor BufferedInputStream(InputStream,int) erstellt ein Objekt BufferedInputStream mit dem Array buffer, deren Größe angegeben ist.
- Der Contructor BufferedInputStream(InputStream) erstellt ein Objekt BufferedInputStream mit dem Array buffer, deren Größe default ist (size = 8192).
2. mark() & reset()
Ein interessanter Aspekt von BufferedInputStream ist, dass es mark() und reset() unterstüzt, zwei von InputStream geerbte Methoden. Nicht alle Unterklasse von InputStream unterstützen diese beiden Methoden. Grundsätzlich können Sie die Methode markSupported() aufrufen um zu prüfen, ob zwei obige Methode unterstützt werden oder nicht.
Sehen Sie mehr die detailierte Erläuterung über die zwei Methoden mark() und reset() im Artikel über InputStream:
3. Examples
Um ein Objekt BufferedInputStream zu erstellen, müssen Sie ein Objekt InputStream erstellen um die Daten vom Ursprung (z.B aus der Datei) zu lesen. Da InputStream ein abstrakte Klasse ist, müssen Sie sie aus einer ihrer Unterklassen erstellen.
Z.B: Erstellen Sie einen BufferedInputStream mit einem Array buffer von 16384. D.h dieser buffer hat eine Größe von 16384 bytes (16 KB).
// Create InputStream to read a file.
InputStream is = new FileInputStream("/Volumes/Data/test/test.txt");
// Create a BufferedInputStream with buffer array size of 16384 (16 KB).
BufferedReader br = new BufferedReader(is, 16384);
Erstellen Sie einen BufferedInputStream mit der Standardgröße vom Array buffer (8192), die 8192 bytes (8 KB) entspricht.
// Create Reader to read a file.
Reader reader = new FileReader("/Volumes/Data/test/test.txt");
// Create a BufferedReader with default buffer array size of 8192 (16384 bytes = 16 KB).
BufferedReader br = new BufferedReader(reader);
Z.B: Verwenden Sie BufferedInputStream um die Datei zu lesen.
test.txt
This is the Latin text
BufferedInputStreamEx1.java
package org.o7planning.bufferedinputstream.ex;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
public class BufferedInputStreamEx1 {
// C:/test/test.txt
private static String file_path = "/Volumes/Data/test/test.txt";
public static void main(String[] args) throws IOException {
File file = new File(file_path);
InputStream is = new FileInputStream(file);
BufferedInputStream bis = new BufferedInputStream(is);
int code;
while((code = bis.read())!= -1) {
System.out.println(code +" " + (char)code);
}
bis.close();
}
}
Output:
84 T
104 h
105 i
115 s
32
105 i
115 s
32
116 t
104 h
101 e
32
76 L
97 a
116 t
105 i
110 n
32
116 t
101 e
120 x
116 t
10
Z.B: Verwenden Sie BufferedInputStream um eine URL zu lesen, um die Programmleistung zu verbessern.
BufferedInputStreamEx2.java
package org.o7planning.bufferedinputstream.ex;
import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
public class BufferedInputStreamEx2 {
private static String urlString = "https://s3.o7planning.com/images/smile-32.png";
public static void main(String[] args) throws IOException {
URL url = new URL(urlString);
InputStream is = url.openConnection().getInputStream();
BufferedInputStream bis = new BufferedInputStream(is);
int code;
while ((code = bis.read()) != -1) {
System.out.print((char) code);
}
bis.close();
}
}
Die Anleitungen Java IO
- Die Anleitung zu Java CharArrayWriter
- Die Anleitung zu Java FilterReader
- Die Anleitung zu Java FilterWriter
- Die Anleitung zu Java PrintStream
- Die Anleitung zu Java BufferedReader
- Die Anleitung zu Java BufferedWriter
- Die Anleitung zu Java StringReader
- Die Anleitung zu Java StringWriter
- Die Anleitung zu Java PipedReader
- Die Anleitung zu Java LineNumberReader
- Die Anleitung zu Java PushbackReader
- Die Anleitung zu Java PrintWriter
- Die Anleitung zu Java IO Binary Streams
- Die Anleitung zu Java IO Character Streams
- Die Anleitung zu Java BufferedOutputStream
- Die Anleitung zu Java ByteArrayOutputStream
- Die Anleitung zu Java DataOutputStream
- Die Anleitung zu Java PipedInputStream
- Die Anleitung zu Java OutputStream
- Die Anleitung zu Java ObjectOutputStream
- Die Anleitung zu Java PushbackInputStream
- Die Anleitung zu Java SequenceInputStream
- Die Anleitung zu Java BufferedInputStream
- Die Anleitung zu Java Reader
- Die Anleitung zu Java Writer
- Die Anleitung zu Java FileReader
- Die Anleitung zu Java FileWriter
- Die Anleitung zu Java CharArrayReader
- Die Anleitung zu Java ByteArrayInputStream
- Die Anleitung zu Java DataInputStream
- Die Anleitung zu Java ObjectInputStream
- Die Anleitung zu Java InputStreamReader
- Die Anleitung zu Java OutputStreamWriter
- Die Anleitung zu Java InputStream
- Die Anleitung zu Java FileInputStream
Show More
- Anleitungen Java Servlet/JSP
- Die Anleitungen Java New IO
- Anleitungen Spring Cloud
- Die Anleitungen Oracle Java ADF
- Die Anleitungen Java Collections Framework
- Java Grundlagen
- Die Anleitungen Java Date Time
- Java Open Source Bibliotheken
- Anleitungen Java Web Services
- Die Anleitungen Struts2 Framework
- Anleitungen Spring Boot