Führen Sie Sie Schritt für Schritt durch die Analyse der Reader-Klasse in Java

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

ReaderIn diesem Artikel werden Klassen in Java unter folgenden Gesichtspunkten ausführlich vorgestellt:

  1. Überblick über die Reader-Klasse
  2. Analyse des Reader-Klassencodes
  3. Anwendungsszenariofälle der Reader-Klasse
  4. Analyse der Vor- und Nachteile der Reader-Klasse
  5. Einführung in die Reader-Klassenmethode und Quellcode-Analyse
  6. Testfälle für die Reader-Klasse
  7. Volltextzusammenfassung und Zusammenfassung
  8. Angehängter Quellcode
  9. 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

ReaderDie 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: Readableund Closeable. ReadableIn der Schnittstelle ist nur eine Methode definiert:

öffentliche Schnittstelle lesbar {
    int read(CharBuffer cb) löst eine IOException aus;
}

CloseableIn 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

  1. ReaderDie Klasse unterstützt das Lesen von Zeichenströmen und kann Daten in Textdateien genau lesen.
  2. ReaderDie Klasse kann Probleme mit der Zeichenkodierung automatisch behandeln und Kodierungsmethoden beim Lesen von Dateien automatisch konvertieren.
  3. Durch verschiedene Unterklassen der Klasse können Readerunterschiedliche Funktionen implementiert werden, und die Verwendung ist flexibel.

Mangel

  1. ReaderDie Klasse liest Daten langsam und ist nicht zum Lesen von Binärdaten geeignet.
  2. ReaderDie 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.
  3. ReaderDie 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

ReaderDieser 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 Readerin der Entwicklung sinnvoll einsetzen.Reader

Zusammenfassen

ReaderKlasse 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. ReaderAchten 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.

Klicken Sie hier, um zu folgen und so schnell wie möglich mehr über die neuen Technologien von Huawei Cloud zu erfahren~

 

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
{{o.name}}
{{m.name}}

Supongo que te gusta

Origin my.oschina.net/u/4526289/blog/10136906
Recomendado
Clasificación