Lesen einer Datei mit der Scannerklasse von Java

Hinweis

Ich bin neu im Schreiben in Qitta. Da ich ein Student bin, würde ich es außerdem begrüßen, wenn Sie es lesen könnten, wenn man bedenkt, dass die Wahrscheinlichkeit groß ist, dass Fehler enthalten sind.

Einführung

Dieser Artikel ist eine persönliche Zusammenfassung der Scannerklasse, die standardmäßig in Java enthalten ist. Gibt es. Zum Hintergrund des Schreibens dieses Artikels → In der Spezifikation wurde angegeben, dass die Verwendung der Scannerklasse erfolgen soll. → Das weiß ich nicht. → Ich konnte es schaffen. → Machen Sie sich irgendwo eine Notiz, damit Sie sie nicht vergessen. Es ist wie es ist. Übrigens verwende ich normalerweise BufferedReader oder FileReader. /javase/jp/8/docs/api/java/io/FileReader.html) wird verwendet. (Ja, hier ...)

Lesen Sie die Datei

FileReader


        try {
            Scanner scanner = new Scanner (new File ("sourceFileName"/*Dateiname, den Sie hier lesen möchten(In einigen Fällen ist auch ein Pass erforderlich)*/));
        } catch (FileNotFoundException e) { //Ausnahme
            //Was tun, wenn die Datei nicht vorhanden ist?
            e.printStackTrace();
        }

Der Teil, der die Datei vorerst liest. Fügen Sie beim Erstellen eines Objekts das Objekt Dateiklasse als Argument ein. Die File-Klasse behält die Dateiinformationen bei, wenn ein Objekt mit dem Dateipfad als Argument erstellt wird. Praktisch. Ich denke, Sie sollten es mit dem Konstruktor tun.

Zeile für Zeile vom Scanner lesen

ReadLine


        try {
            //Wenn die Datei ungelesene Teile enthält
            if (scanner.hasNextLine()) { 
                line = scanner.nextLine() + '\n';                                                      
            //Wann nicht
            } else {
                line = null;
            }
        //Lese fehler
        } catch (IllegalStateException e) { 
            e.printStackTrace();
            closeFile();
            System.exit (1);
        }
Methodenname Bewegung
hasNextLine() Gibt true zurück, wenn der Scanner die folgende Zeile enthält
nextLine() Schieben Sie den Scanner vor und geben Sie eine Zeile zurück

line ist eine Variable vom Typ String und wird diesmal als Feld gehalten. Wenn Sie diese Zeile ausgeben, wird der Inhalt der Datei sicher ausgegeben. "\ N" wird für die Ausgabe hinzugefügt. Ich denke, Sie können eine neue Zeile in der Hauptanweisung beginnen.

Lesen Sie Zeichen für Zeichen vom Scanner

ReadChar


        current = next;
        if (next == '\0') {
        //Nur übliche Operation am Ende der Datei
        } else if (next == '\n') {
            //Ende der Linie
            readLine();
            if (line != null) {
                //Die gelesene Zeile ist nicht null
                next = line.charAt (0);
                number = 0;
            } else {
                //Die gelesene Zeile ist null(Ende der Datei)Im Falle von
                next = '\0'; //'\0'Stellt das Ende der Datei dar
            }
        } else {
            //Wenn es weder das Ende der Datei noch das Ende der Zeile ist
            next = line.charAt (++number);
        }
        return current;
Variablennamen Bewegung
current Zeile wird gelesen
next Nächste zu lesende Zeile
number Aktuelle Anzahl der Zeichen

Ich habe es mit der oben erwähnten readLine gemacht. Operativ schneidet es aus, was Zeile für Zeile, Zeichen für Zeichen gelesen wurde. Um ehrlich zu sein, ist es unvernünftig, aber es gibt keine Spezifikation, weil die Spezifikationen so sind.

Schließlich

Ich habe es so gemacht, dass es vorerst funktioniert. Alles, was übrig bleibt, ist die Ausgabe mit einer while-Anweisung oder dergleichen. Zusammenfassend ist es ärgerlich. Darauf beschränkt. Ich hoffe nur, dass zukünftige Studenten in einer ähnlichen Situation keine Schwierigkeiten haben werden. Wenn Sie ein Problem haben, lesen Sie zuerst das offizielle API-Dokument (Englisch)!

Recommended Posts

Lesen einer Datei mit der Scannerklasse von Java
[Persönliches Memo] Lesen von Dateien mit BufferedReader
Erstellen Sie eine statische Datei, die Variablen mithilfe der ERB-Klasse erweitert
[Persönliches Memo] Schreiben einer Datei mit BufferedWriter
Java-Scanner-Klasse
Mit ShiftJIS in Datei schreiben ・ Datei lesen (Kotlin / JVM)
Eine Geschichte voller Javas Standardeingabescanner
Mit der Kalenderklasse von Java bleibt man am letzten Tag des Monats ein wenig hängen
Bei Verwendung des Konstruktors der Date-Klasse von Java wird das Datum um 1900 vorverlegt.
Testen Sie eine Klasse, die einen Kontext empfängt und Dateien liest und schreibt