Dieser Artikel wurde von Bugger aus der Huawei Cloud Community „ Ausführliches Verständnis der Reader-Klasse in Java: Schritt-für-Schritt-Analyse “ geteilt.
Vorwort
Während der Java-Entwicklung müssen wir häufig Daten aus Dateien lesen, und das Lesen von Daten erfordert eine geeignete Klasse für die Verarbeitung. Das IO-Paket von Java bietet viele Klassen zum Lesen und Schreiben von Daten, darunter auch Reader. In diesem Artikel werden Reader in Java ausführlich vorgestellt und seine Vor- und Nachteile sowie Anwendungsszenarien analysiert.
Zusammenfassung
Reader
In diesem Artikel werden Klassen in Java unter folgenden Gesichtspunkten ausführlich vorgestellt:
- Überblick über die Reader-Klasse
- Analyse des Reader-Klassencodes
- Anwendungsszenariofälle der Reader-Klasse
- Analyse der Vor- und Nachteile der Reader-Klasse
- Einführung in die Reader-Klassenmethode und Quellcode-Analyse
- Testfälle für die Reader-Klasse
- Volltextzusammenfassung und Zusammenfassung
- Angehängter Quellcode
- Anregung
Dieser Artikel enthält eine detaillierte Erklärung von Reader in Java und soll Entwicklern helfen, die Verwendung von Reader besser zu verstehen.
Leserklasse
Überblick
Die Reader-Klasse ist eine abstrakte Klasse in Java zum Lesen von Zeichenströmen. Sie ist die Oberklasse aller Zeicheneingabeströme und stellt Grundfunktionen zum Lesen von Zeicheneingabeströmen bereit. Die Reader-Klasse wird hauptsächlich durch drei Klassen implementiert, nämlich InputStreamReader, FileReader und CharArrayReader.
Quellcode-Analyse
Reader
Die Klasse ist eine abstrakte Klasse und ihr Quellcode ist wie folgt definiert:
öffentliche abstrakte Klasse Reader implementiert Readable, Closeable { ... }
Unter diesen implementiert Reader zwei Schnittstellen: Readable
und Closeable
. Readable
In der Schnittstelle ist nur eine Methode definiert:
öffentliche Schnittstelle lesbar { int read(CharBuffer cb) löst eine IOException aus; }
Closeable
In der Schnittstelle ist nur eine Methode definiert :
öffentliche Schnittstelle Closeable erweitert AutoCloseable { void close() löst eine IOException aus; }
Die Funktion dieser beiden Schnittstellen besteht darin, Methoden zum Lesen von Zeichen bzw. zum Schließen von Ressourcen bereitzustellen.
Fälle von Anwendungsszenarien
Die Reader-Klasse wird normalerweise zum Lesen von Daten aus Textdateien verwendet. Beispielsweise ist der von uns häufig verwendete BufferedReader eine Unterklasse der Reader-Klasse und wird zum zeilenweisen Lesen von Daten in Textdateien verwendet. Darüber hinaus kann Reader auch in Szenarien wie dem Lesen von Netzwerkdaten und dem Lesen von Konsoleneingaben verwendet werden.
Im Folgenden finden Sie mehrere Anwendungsszenarien für die Verwendung der Reader-Klasse, die den Schülern lediglich als Referenz dienen:
1. Textdatei lesen
Es ist üblich, die FileReader-Klasse zum Lesen von Textdateien zu verwenden. Beispielsweise können Sie mit der Kombination und eine Textdatei lesen und zeilenweise ausgeben: FileReader
BufferedReader
//1. Textdatei lesen public static void testReadFile(){ FileReader fileReader; BufferedReader bufferedReader; versuchen { fileReader = new FileReader("./template/fileTest.txt"); bufferedReader = new BufferedReader(fileReader); String-Linie; while ((line = bufferedReader.readLine()) != null) { System.out.println(line); } fileReader.close(); bufferedReader.close(); } Catch (IOException e) { e.printStackTrace(); } }
Durch den obigen Fall haben wir es vor Ort demonstriert, und die Ergebnisse können wie folgt gesehen werden:
2. Lesen Sie Netzwerkressourcen
Sie können die Klassen InputStreamReader und URL verwenden, um Netzwerkressourcen zu lesen, zum Beispiel:
//2. Netzwerkressourcen lesen public static void testReadURL() löst eine IOException { aus URL url = neue URL("https://www.baidu.com/"); URLConnection conn = url.openConnection(); InputStream ist = conn.getInputStream(); InputStreamReader isr = new InputStreamReader(is); BufferedReader br = new BufferedReader(isr); String-Linie; while ((line = br.readLine()) != null) { System.out.println(line); } br.close(); isr.close(); ist in der Nähe(); } public static void main(String[] args) löst eine IOException { testReadURL(); }
Durch den obigen Fall haben wir es vor Ort demonstriert, und die Ergebnisse können wie folgt gesehen werden:
3. Lesen Sie die Zeichenfolge
Sie können die StringReader-Klasse verwenden, um eine Zeichenfolge in einen Zeichenstrom umzuwandeln, zum Beispiel:
//3. Lies die Zeichenfolge public static void testReadStr() löst eine IOException { aus String str = "Hallo Welt!!!"; StringReader stringReader = new StringReader(str); int-Daten; while ((data = stringReader.read()) != -1) { System.out.print((char) data); } stringReader.close(); } public static void main(String[] args) löst eine IOException { testReadStr(); }
Durch den obigen Fall haben wir es vor Ort demonstriert, und die Ergebnisse können wie folgt gesehen werden:
Durch die Einführung und Demonstration der oben genannten drei gängigen Anwendungsszenarien der Verwendung der Reader-Klasse in Java können verschiedene Arten von Zeichenstromdaten mithilfe von Unterklassen der Reader-Klasse problemlos gelesen werden. Wenn Sie weitere Fälle haben, die für Ihr Leben oder Ihre Arbeit relevant sind, können Sie diese gerne im Kommentarbereich teilen. Allein Spaß zu haben ist nicht so gut wie Spaß mit allen.
Vorteile und Nachteile
Vorteil
Reader
Die Klasse unterstützt das Lesen von Zeichenströmen und kann Daten in Textdateien genau lesen.Reader
Die Klasse kann Probleme mit der Zeichenkodierung automatisch behandeln und Kodierungsmethoden beim Lesen von Dateien automatisch konvertieren.- Durch verschiedene Unterklassen der Klasse können
Reader
unterschiedliche Funktionen implementiert werden, und die Verwendung ist flexibel.
Mangel
Reader
Die Klasse liest Daten langsam und ist nicht zum Lesen von Binärdaten geeignet.Reader
Die Klasse kann nicht zufällig auf die Daten in der Datei zugreifen und nur Zeile für Zeile lesen, was beim Lesen großer Dateien weniger effizient ist.Reader
Die Verwendung von Klassen ist umständlicher und erfordert Puffer und andere Methoden, um die Lesegeschwindigkeit und -effizienz zu verbessern.
Einführung in Klassencodemethoden
Konstruktionsmethode
protected Reader()
Der Standardkonstruktor der Reader-Klasse.
Methode
public int read() löst eine IOException aus
Verwendung: Ein einzelnes Zeichen lesen und den ASCII-Code des Zeichens zurückgeben. Wenn das Ende des Streams erreicht ist, wird -1 zurückgegeben.
public int read(char[] cbuf) löst eine IOException aus
Zweck: Zeichenarray lesen und die Anzahl der gelesenen Zeichen zurückgeben.
public int read(char[] cbuf, int offset, int length) löst eine IOException aus
Zweck: Ein Zeichenarray der angegebenen Länge lesen und die Anzahl der gelesenen Zeichen zurückgeben.
public long skip(long n) löst eine IOException aus
Verwendung: Überspringen Sie n Zeichen (einschließlich Leerzeichen) und geben Sie die tatsächliche Anzahl der übersprungenen Zeichen zurück.
public boolean ready() löst eine IOException aus
Verwendung: Bestimmen Sie, ob Zeichen aus dem Stream gelesen werden können, und geben Sie true zurück, wenn sie gelesen werden können.
öffentliches boolesches markSupported()
Verwendung: Bestimmen Sie, ob dieser Stream die Operation mark() unterstützt. Gibt „true“ zurück, wenn dies unterstützt wird, andernfalls „false“.
public void mark(int readAheadLimit) löst eine IOException aus
Verwendung: Legen Sie die Markierungsposition fest und zeigen Sie mit dem Zeiger im Eingabestream auf die Markierungsposition. Wenn der Stream die mark()-Operation nicht unterstützt, wird eine IOException ausgelöst.
public void reset() löst eine IOException aus
Verwendung: Leiten Sie den Zeiger im Eingabestream auf die Markierungsposition um. Wenn der Stream die Operation „reset()“ nicht unterstützt, wird eine IOException ausgelöst.
abstract public void close() löst eine IOException aus
Zweck: Schließen Sie den Stream und geben Sie alle damit verbundenen Ressourcen frei.
Testfall
Das Folgende ist ein Testfall zum Lesen einer Datei mithilfe der Reader-Klasse:
Testcode-Demo
Paket com.example.javase.io.reader; java.io.File importieren; import java.io.FileReader; import java.io.IOException; java.io.Reader importieren; /** * @author-Bug-Bug * @Version 1.0 * @Datum 19.10.2023 10:34 */ öffentliche Klasse ReaderTest { public static void main(String[] args) löst eine IOException { Datei file = neue Datei("./template/fileTest.txt"); Reader reader = new FileReader(file); char[] buffer = new char[1024]; int len; while ((len = reader.read(buffer)) != -1) { System.out.println(new String(buffer, 0, len)); } reader.close(); } }
Anzeige der Testergebnisse
Führen wir gemäß dem obigen Testfall die Hauptfunktion aus, um die Zeichendaten der gelesenen Datei zu testen. Die Ergebnisse werden im folgenden Screenshot angezeigt:
Durch den Vergleich des von der Konsole ausgegebenen Inhalts mit dem ursprünglichen Textinhalt können Sie erkennen, dass der Testfall die Reader-Klasse verwendet, um den Dateiinhalt normal zu lesen.
Code-Analyse
Der obige Testcode verwendet die Reader-Klasse, um Zeichendaten aus der Datei zu lesen. Das Folgende ist eine Schritt-für-Schritt-Analyse des Codes, um den Schülern zu helfen, ihr Verständnis zu beschleunigen.
Zuerst erstellen wir ein File-Objekt, geben den zu lesenden Dateipfad an und verwenden dann die Klasse, um die Datei in den Speicher zu lesen und das Objekt zurückzugeben. Verwenden Sie dann das Array als Puffer, lesen Sie Daten daraus in den Puffer und konvertieren Sie die Pufferdaten mithilfe einer Klasse in einen String und geben Sie ihn an die Konsole aus, bis alle Daten gelesen sind. Schließen Sie abschließend das Reader-Objekt und geben Sie zugehörige Ressourcen frei. Der gesamte Lesevorgang ist sehr einfach. Haben Sie es gelernt? FileReader
Reader
char[]
Reader
String
Zusammenfassung des Volltextes
Reader
Dieser Artikel bietet eine detaillierte Einführung in Klassen in Java , einschließlich ihrer Einführung, Quellcode-Analyse, Anwendungsszenariofällen, Analyse von Vor- und Nachteilen, Methodeneinführung und Testfällen. Durch das Studium dieses Artikels können wir die Verwendungsmethode besser beherrschen und Klassen Reader
in der Entwicklung sinnvoll einsetzen.Reader
Zusammenfassen
Reader
Klasse ist eine abstrakte Klasse in Java zum Lesen von Zeichenströmen. Sie bietet den Vorteil, Textdaten zu lesen, die Zeichenkodierung automatisch zu verarbeiten und kann über ihre Unterklassen verschiedene Funktionen implementieren. Die Reader-Klasse liest Daten jedoch langsam, eignet sich nicht zum Lesen von Binärdaten und kann nicht zufällig auf Daten in Dateien zugreifen. Reader
Achten Sie bei der Verwendung von Klassen auf die Verwendung von Puffern und anderen Methoden, um die Lesegeschwindigkeit und -effizienz zu verbessern. Achten Sie abschließend darauf, Ressourcen zu schließen, um Probleme mit Ressourcenlecks zu vermeiden.
Anhang Quellcode
Alle oben genannten Quellcodes wurden in „Gitee“ hochgeladen und synchronisiert , um den Schülern Einzel-Referenzlernen zu ermöglichen, damit sie schneller damit umgehen können.
Lei Jun kündigte die komplette Systemarchitektur von Xiaomis ThePaper OS an und sagte, dass die unterste Schicht komplett neu strukturiert wurde. Yuque gab am 23. Oktober die Ursache des Ausfalls und den Reparaturprozess bekannt. Microsoft-CEO Nadella: Der Verzicht auf Windows Phone und das Mobilfunkgeschäft war eine falsche Entscheidung . Sowohl die Nutzungsraten von Java 11 als auch von Java 17 überstiegen den Zugriff von Java 8 Hugging Face auf Yuque. Der Netzwerkausfall dauerte etwa 10 Stunden und hat sich nun wieder normalisiert. Die National Data Administration hat Oracle offiziell vorgestellt. Java-Entwicklungserweiterung für Visual Studio gestartet Code. Musk: Spenden Sie 1 Milliarde, wenn Wikipedia in „Weiji Encyclopedia“ umbenannt wird. USDMySQL 8.2.0 GA