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.
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 ...)
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.
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.
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.
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