Die Hauptunterschiede:
- Scanner
- Ein einfacher Textscanner, der primitive Typen und Zeichenfolgen mithilfe regulärer Ausdrücke analysieren kann.
- Ein Scanner unterteilt seine Eingabe mithilfe eines Begrenzungsmusters in Token, das standardmäßig mit Leerzeichen übereinstimmt. Die resultierenden Token können dann unter Verwendung der verschiedenen nächsten Methoden in Werte verschiedener Typen umgewandelt werden.
Beispiel
String input = "1 fish 2 fish red fish blue fish";
Scanner s = new Scanner(input).useDelimiter("\\s*fish\\s*");
System.out.println(s.nextInt());
System.out.println(s.nextInt());
System.out.println(s.next());
System.out.println(s.next());
s.close();
druckt die folgende Ausgabe:
1
2
red
blue
Dieselbe Ausgabe kann mit diesem Code generiert werden, der einen regulären Ausdruck verwendet, um alle vier Token gleichzeitig zu analysieren:
String input = "1 fish 2 fish red fish blue fish";
Scanner s = new Scanner(input);
s.findInLine("(\\d+) fish (\\d+) fish (\\w+) fish (\\w+)");
MatchResult result = s.match();
for (int i=1; i<=result.groupCount(); i++)
System.out.println(result.group(i));
s.close(); `
BufferedReader:
Liest Text aus einem Zeicheneingabestream und puffert Zeichen, um das effiziente Lesen von Zeichen, Arrays und Zeilen zu ermöglichen.
Die Puffergröße kann angegeben oder die Standardgröße verwendet werden. Die Standardeinstellung ist für die meisten Zwecke groß genug.
Im Allgemeinen bewirkt jede Leseanforderung eines Lesers, dass eine entsprechende Leseanforderung des zugrunde liegenden Zeichens oder Bytestroms gestellt wird. Es ist daher ratsam, einen BufferedReader um jeden Reader zu wickeln, dessen read () -Operationen kostspielig sein können, z. B. FileReaders und InputStreamReaders. Zum Beispiel,
BufferedReader in
= new BufferedReader(new FileReader("foo.in"));
puffert die Eingabe aus der angegebenen Datei. Ohne Pufferung kann jeder Aufruf von read () oder readLine () dazu führen, dass Bytes aus der Datei gelesen, in Zeichen konvertiert und dann zurückgegeben werden, was sehr ineffizient sein kann. Programme, die DataInputStreams für die Texteingabe verwenden, können lokalisiert werden, indem jeder DataInputStream durch einen geeigneten BufferedReader ersetzt wird.
Quelle: Link