クラスBufferedReader
、FileReader
とScanner
の違いを誰かに説明できますか?そして、テキストファイルを読みたいときに使用するのはどれですか。
上手:
FileReader
は、プラットフォームのデフォルトのエンコーディングを使用してファイルを読み取るReader
です(urgh)BufferedReader
は別のReader
のラッパーであり、バッファリングと一度に1行を読み取る機能を追加しますScanner
はさまざまなソースから読み取りますが、通常はインタラクティブな入力に使用されます。個人的には、Scanner
のAPIはかなり苦痛で不明瞭だと思います。テキストファイルを読み取るには、FileInputStream
にラップしてInputStreamReader
を使用し(エンコードを指定できるようにする)、バッファリングと機能のためにBufferedReader
にラップすることをお勧めします一度に1行ずつ読みます。
または、 Guava のように、サードパーティのライブラリを使用して簡単にすることもできます。
File file = new File("foo.txt");
List<String> lines = Files.readLines(file, Charsets.UTF_8);
または、Java 7を使用している場合は、Java.nio.file.Files
:
Path path = FileSystems.getDefault().getPath("foo.txt");
List<String> lines = Files.readAllLines(path, StandardCharsets.UTF_8);
そして、テキストファイルを読み取るための質問に従って、BufferedReader
はIOExceptionを非表示にするため、Scanner
を使用する必要がありますが、BufferedReader
throwsすぐに。
BufferedReader
は同期されますが、Scanner
は同期されません。
Scanner
は、ストリームのコンテンツからトークンを解析するために使用されます。
BufferedReader
はストリームを読み取るだけです。
詳細については、リンク( http://en.allexperts.com/q/Java-1046/2009/2/Difference-Scanner-Method-Buffered.htm )に従ってください