主な違い:
- スキャナー
- 正規表現を使用してプリミティブ型と文字列を解析できるシンプルなテキストスキャナー。
- Scannerは、デフォルトで空白と一致する区切り文字パターンを使用して、入力をトークンに分割します。結果のトークンは、さまざまなnextメソッドを使用して、さまざまなタイプの値に変換できます。
例:
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();
次の出力を出力します。
1
2
red
blue
このコードでも同じ出力を生成できます。このコードは、正規表現を使用して4つのトークンすべてを一度に解析します。
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:
一般に、リーダーで作成された各読み取り要求により、対応する読み取り要求が基になる文字またはバイトストリームで作成されます。したがって、FileReadersやInputStreamReadersなど、read()操作にコストがかかる可能性のあるReaderの周りにBufferedReaderをラップすることをお勧めします。例えば、
BufferedReader in = new BufferedReader(new FileReader("foo.in"));
指定されたファイルからの入力をバッファリングします。バッファリングを行わないと、read()またはreadLine()を呼び出すたびに、バイトがファイルから読み取られ、文字に変換されてから返される可能性があり、これは非常に非効率的です。テキスト入力にDataInputStreamsを使用するプログラムは、各DataInputStreamを適切なBufferedReaderに置き換えることでローカライズできます。
使用したソース: https ://docs.oracle.com