Java Language
Leser und Schriftsteller
Suche…
Einführung
Leser und Verfasser und ihre jeweiligen Unterklassen bieten einfache E / A für text- / zeichenbasierte Daten.
BufferedReader
Einführung
Die BufferedReader
Klasse ist ein Wrapper für andere Reader
Klassen, der zwei Hauptzwecken dient:
Ein
BufferedReader
bietet Pufferung für den eingebundenenReader
. Dadurch kann eine Anwendung Zeichen nacheinander ohne übermäßigen E / A-Aufwand lesen.Ein
BufferedReader
bietet Funktionen zum Lesen von Text für Zeile.
Grundlagen zur Verwendung eines BufferedReader
Das normale Muster für die Verwendung eines BufferedReader
ist wie folgt. Zuerst erhalten Sie den Reader
, von dem Sie die Zeichen lesen möchten. Als Nächstes instanziieren Sie einen BufferedReader
, der den Reader
BufferedReader
. Dann lesen Sie Zeichendaten. Schließlich schließen Sie den BufferedReader
der den umwickelten `Reader schließt. Zum Beispiel:
File someFile = new File(...);
int aCount = 0;
try (FileReader fr = new FileReader(someFile);
BufferedReader br = new BufferedReader(fr)) {
// Count the number of 'a' characters.
int ch;
while ((ch = br.read()) != -1) {
if (ch == 'a') {
aCount++;
}
}
System.out.println("There are " + aCount + " 'a' characters in " + someFile);
}
Sie können dieses Muster auf jeden Reader
anwenden
Anmerkungen:
Wir haben Java 7 (oder später) Try-With-Ressourcen verwendet, um sicherzustellen, dass der zugrunde liegende Reader immer geschlossen ist. Dadurch wird ein potenzielles Ressourcenleck vermieden. In früheren Java-Versionen würden Sie den
BufferedReader
explizit in einemfinally
Block schließen.Der Code im
try
Block ist praktisch identisch mit dem, was wir verwenden würden, wenn wir direkt aus demFileReader
lesen. Tatsächlich funktioniert einBufferedReader
genauso wie derReader
, den er wrappen würde. Der Unterschied ist, dass diese Version wesentlich effizienter ist.
Die Puffergröße des BufferedReader
Die BufferedReader.readLine () -Methode
Beispiel: Lesen aller Zeilen einer Datei in eine Liste
Dazu wird jede Zeile in einer Datei abgerufen und in eine List<String>
. Die Liste wird dann zurückgegeben:
public List<String> getAllLines(String filename) throws IOException {
List<String> lines = new ArrayList<String>();
try (BufferedReader br = new BufferedReader(new FileReader(filename))) {
String line = null;
while ((line = reader.readLine) != null) {
lines.add(line);
}
}
return lines;
}
Java 8 bietet eine einfachere Möglichkeit, dies mit der lines()
-Methode zu tun:
public List<String> getAllLines(String filename) throws IOException {
try (BufferedReader br = new BufferedReader(new FileReader(filename))) {
return br.lines().collect(Collectors.toList());
}
return Collections.empty();
}
StringWriter-Beispiel
Die Java-StringWriter-Klasse ist ein Zeichenstrom, der die Ausgabe von Zeichenfolgenpuffer sammelt und zur Erstellung einer Zeichenfolge verwendet werden kann.
Die StringWriter-Klasse erweitert die Writer-Klasse.
In der StringWriter-Klasse werden keine Systemressourcen wie Netzwerk-Sockets und -Dateien verwendet. Das Schließen des StringWriter ist daher nicht erforderlich.
import java.io.*;
public class StringWriterDemo {
public static void main(String[] args) throws IOException {
char[] ary = new char[1024];
StringWriter writer = new StringWriter();
FileInputStream input = null;
BufferedReader buffer = null;
input = new FileInputStream("c://stringwriter.txt");
buffer = new BufferedReader(new InputStreamReader(input, "UTF-8"));
int x;
while ((x = buffer.read(ary)) != -1) {
writer.write(ary, 0, x);
}
System.out.println(writer.toString());
writer.close();
buffer.close();
}
}
Das obige Beispiel hilft uns, ein einfaches Beispiel für StringWriter kennenzulernen, der BufferedReader verwendet, um Dateidaten aus dem Stream zu lesen.