Verwenden Sie den Datei-oder FileReader mit Scanner?
Disclaimer: ich habe mir über alle Fragen, die ich finden kann, und keiner von Ihnen antwortet auf diese genaue Frage. Wenn Sie eine finden, bitte zeigen Sie mir es und höflich sein.
So, die Oracle I/O-tutorial öffnet eine text-Datei mit dem Scanner wie folgt:
new Scanner(BufferedReader(FileReader("xanadu.txt")));
Aber die Javadoc öffnet eine text-Datei mit dem Scanner wie diesem:
new Scanner(new File("myNumbers"));
Es wäre schön, verwenden Sie die einfachere Methode, vor allem wenn ich eine kleine Datei und Leben können, mit den kleineren Puffer, aber ich habe auch Leute gesehen, die sagen, dass, wenn Sie eine Datei öffnen, direkt Sie kann es nicht schließen. Wenn das der Fall ist, warum ist das idiom verwendet, die in der offiziellen Dokumentation?
Edit: ich habe auch gesehen new Scanner(FileReader("blah.txt"));
aber dies scheint die Schlimmste aus beiden Welten.
Edit: ich versuche nicht, um eine Debatte darüber, ob Scanner oder nicht. Ich habe eine Frage darüber, wie Sie den Scanner verwenden. Danke.
InformationsquelleAutor orbfish | 2012-01-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kann man sich bei der Implementierung von Scanner (JDK ausgeliefert wird mit source-code). Es ist eine close () - Methode in der Scanner-Klasse als auch. Im wesentlichen werden beide Ansätze, die Sie aufgelistet sind identisch zu Ihrer Verwendung bei der Lektüre kleine Datei, - nur vergessen Sie nicht, rufen Sie close() am Ende.
Ja, wenn Sie eine pass-Datei in die Scanner-Konstruktor es wird verwendet, um stream öffnen, die geschlossen werden würde beim Aufruf von Scanner.close () - Methode. Egal, welchen Konstruktor Sie verwenden, wenn Sie rufen Sie close() richtig (z.B. von try/finally), dann wäre es richtig geschlossen ist.
InformationsquelleAutor maximdim
Den
File
Klasse hat keineclose()
Methode, weil es nur abstracts eine Datei auf der Festplatte gespeichert. Es ist nicht ein input-stream auf die Datei, so gibt es nichts zu schließen.Sie don ' T lassen Sie nichts herumstehen. Die File-Klasse ist nur eine information Halter für eine physische Datei. Es ist nicht ein Datei-handle.
InformationsquelleAutor Tudor
Ja, können Sie das tun.
Im Grunde haben Sie:
Lesen Sie einen String ein:
Wenn Sie fertig sind mit der Datei tun
InformationsquelleAutor Jim Gao
Pferde für Kurse. Vom Scanner javadocs, ein Scanner ist Ein "einfach text-scanner, die analysieren können primitive Typen und strings mit reguläre Ausdrücke." So, mein nehmen auf Ihre Frage ist: ist es egal, welche Ansatz, den Sie verwenden, ist die einfachere option mit Datei ist nur so gut wie der Oracle-tutorials. Scanner ist für die bequeme tokenisierung von text Dateien, und wenn die Datei klein ist, wie Sie gesagt haben, als es eine perfekte Passform.
Weil ein Scanner verwendet reguläre Ausdrücke, können Sie nicht wirklich erwarten, riesige Leistung, egal, ob Sie eine gepufferte Datei-reader für den scanner oder nicht. Die zugrunde liegenden Lesbar werden die close () - d (wenn es eine Verschließbare, was es sein wird, wenn Sie den Scanner benutzen(Datei) - Konstruktor), und so brauchen Sie sich keine sorgen zu machen, solange Sie close() auf Ihren Scanner-Objekt (oder mit try-mit-Ressourcen).
InformationsquelleAutor Peter Perháč
Gibt es mehrere Möglichkeiten, zu konstruieren, ein Scanner-Objekt.
http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Scanner.html
Ich persönlich würde nicht einmal den Scanner verwenden für die Datei zu Lesen, obwohl. Schauen BufferedReader tutorials. Es ist nicht allzu schwer herauszufinden.
docs.oracle.com/javase/tutorial/essential/io/scanning.html
Ja, ich habe es gelesen, habe keine Antwort auf meine Frage, was würden Sie wissen, wenn Sie Lesen meine Frage!
InformationsquelleAutor bdabmxican