Die Anleitung zu Java BufferedReader
1. BufferedReader
BufferedReader ist eine Unterklasse von Reader, die zum Vereinfachen des Textschreiben aus der Eingabestream (character input stream) und zur Verbesserung des Programm verwendet wird.
Der Operationsgrundsatz von BufferedReader ist gleich wie die folgende Abbildung:
BufferedReader wickelt sich ein Objekt Reader , das Objekt wird automatisch die Daten aus Quelle (z.B die Datei) filtern und im buffer vom BufferedReader lagern.
BufferedReader überschreibt die aus seiner Vaterklasse geerbten Methode, z.B read(), read(char[]),... um sicherzustellen, dass sie mit der Daten aus buffer , nicht aus der Quelle (Z.B die Datei) manipulieren. Außerdemm bietet BufferedReader die Methode readLine() an um einen Textlinie aus buffer zu lesen.
Der oben erwähnte sogenannte "buffer" ist eigentlich nur ein Zeichenarray. Das Objekt Reader (von BufferedReader) liest automatisch die Zeichen aus der Quelle um in diesem Array zu speichern.
BufferedReader liest die Zeichen aus dem Array buffer und befreit die gelesenen Positionen. Die befreiten Positionen wird benutzt um die von der Quelle neu gelesenen Zeichen zu speichern.
BufferedReader constructors
public BufferedReader(Reader in)
public BufferedReader(Reader in, int sz)
- Der Contructor BufferedReader(Reader,int) erstellt ein Objekt BufferedReader mit dem festgelegten Array buffer.
- Der Contructor BufferedReader(Reader) erstellt ein Objekt BufferedReader mit dem Default Array buffer (die Größe = 8192).
2. BufferedReader vs Scanner
In einigen Fällen können Sie die Verwendung von Scanner anstelle von BufferedReader überlegen. Unten ist das der Vergleich zwischen 2 Klassen:
- BufferedReader ist synchronisiert (thread-safe) während Scanner ist nicht.
- Scanner kann durch die Verwendung von regulären Ausdruck die Syntax der primitiven Typs und String analysieren.
- BufferedReader erlaubt die Größe von buffer festlegen während Scanner hat der festen Größe von buffer (1024).
- BufferedReader hat die größere Defaultgröße von buffer.
- Scanner versteckt IOException, während BufferedReader uns zwingt, es umzugehen.
- BufferedReader ist schneller als Scanner denn es liest ohne die Syntax-Analyse die Daten.
- Die Anleitung zu Java Scanner
3. Examples
Um ein Objekt BufferedReader zu erstellen, brauchen wir ein Objekt Reader zum Lesen der Daten aus der Quelle (z.B aus der Datei) erstellen. Denn Reader ist eine Abstraktklasse, sollen Sie es daher aus einer seiner Unterklassen erstellen
Z.B: Erstellen Sie ein BufferedReader mit der Größe vom Array buffer von 16384. Achtung: Das Datentyp char von Java ist 2 bytes. D.h buffer hat die Kapazität von 32786 bytes (32 KB).
// Create Reader to read a file.
Reader reader = new FileReader("/Volumes/Data/test/test.txt");
// Create a BufferedReader with buffer array size of 16384 (32786 bytes = 32 KB).
BufferedReader br = new BufferedReader(reader, 16384);
Erstellen Sie einen BufferedReader mit der Größe vom Defaultarray buffer (8192), entspricht 16384 bytes (16 KB).
// 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);
Anstelle von der Erstellung von BufferedReader aus seinem Konstruktor können Sie einen BufferedReader nach der folgenden Weise:
BufferedReader br =
Files.newBufferedReader(Paths.get("/Volumes/Data/test/test.txt"));
Z.B: Verwenden Sie das Methode readLine() von BufferedReader um jede Linie der Text zu lesen.
test.txt
Java Tutorials:
Java Reader Tutorial
Java Writer Tutorial
BufferedReaderEx1.java
package org.o7planning.bufferedreader.ex;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
public class BufferedReaderEx1 {
public static void main(String[] args) throws IOException {
// Create Reader to read a file.
Reader reader = new FileReader("/Volumes/Data/test/test.txt");
// Create a BufferedReader with buffer array size of 16384 (32786 bytes = 32 KB).
BufferedReader br = new BufferedReader(reader, 16384);
String line = null;
while((line = br.readLine())!= null) {
System.out.println(line);
}
br.close();
}
}
Output:
Java Tutorials:
Java Reader Tutorial
Java Writer Tutorial
Z.B: Verwenden Sie BufferedReader um ein URL zu lesen:
BufferedReaderEx2.java
package org.o7planning.bufferedreader.ex;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.net.URL;
public class BufferedReaderEx2 {
public static void main(String[] args) throws IOException {
URL oracleURL = new URL("https://www.oracle.com/");
InputStream inputStream = oracleURL.openStream();
// Create a Reader from its subclass InputStreamReader.
Reader reader = new InputStreamReader(inputStream);
BufferedReader br = new BufferedReader(reader);
String inputLine = null;
while ((inputLine = br.readLine()) != null) {
System.out.println(inputLine);
}
br.close();
}
}
4. lines()
Geben Sie ein Stream zurück. Seine Elementen sind die aus BufferedReader gelesenen Textlinie. Stream ist faul. Das Lesen passiert nur wenn der Benutzer die Daten wirklich braucht.
public Stream<String> lines()
students.txt
# Students:
John P
Sarah M
# Sarah B
Charles B
Mary T
Sophia B
Z.B: Lesen Sie einen Textdatei, die den Namen der Student*innen enthaltet. Löschen Sie die Kommentarlinien, die mit dem Zeichen '#' beginnt und drucken die Linien aus, die mit der Buchstabe "B".
BufferedReader_lines_ex1.java
package org.o7planning.bufferedreader.ex;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
import java.util.stream.Stream;
public class BufferedReader_lines_ex1 {
public static void main(String[] args) throws IOException {
Reader reader = new FileReader("/Volumes/Data/test/students.txt");
BufferedReader br = new BufferedReader(reader, 16384);
Stream<String> stream = br.lines();
stream //
.filter(line -> {
return !line.trim().startsWith("#") && line.endsWith("B");
})
.forEach(System.out::println);
br.close();
}
}
Output:
Charles B
Sophia B
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