私の意見では、ファイルから行を読み取って印刷するタスクの例を使用して、単純でJavaの
小作人開発者の生活がどのように変化したかについて、小さくて興味深い例を示します。

私たちの多くは覚えています
「Java 7より前」の苦痛:
BufferedReader reader = null; try { reader = new BufferedReader( new InputStreamReader( new FileInputStream(FILE_NAME), Charset.forName("UTF-8"))); String line; while ((line = reader.readLine()) != null) { System.out.println(line); } } catch (IOException e) {
簡単にすることができます
InputStreamReader in = null; try { in = new InputStreamReader(new FileInputStream(new File(FILE_NAME)), Charsets.UTF_8); LineIterator it = new LineIterator(in); while (it.hasNext()) { System.out.println(it.nextLine()); } } catch (IOException e) {
またはこのように:
LineIterator it = null; try { it = FileUtils.lineIterator(new File(FILE_NAME), "UTF-8"); while (it.hasNext()) { System.out.println(it.nextLine()); } } catch (IOException e) {
Java 7
自動リソース管理(ARM) 、
NIO.2および
StandardCharsetsをもたらしました。 サードパーティのライブラリを接続せずに、次のことが可能になりました。
try (BufferedReader reader = new BufferedReader( new InputStreamReader( new FileInputStream(FILE_NAME), StandardCharsets.UTF_8))){ String line; while ((line = reader.readLine()) != null) { System.out.println(line); } } catch (IOException e) {
またはさらに短い:
List<String> lines = Files.readAllLines(Paths.get(FILE_NAME), StandardCharsets.UTF_8); for(String line: lines){ System.out.println(line); }
そして最後に:
Java 8
Stream APIと
Lambda式を使用して、これを1行で実行できます。
Files.lines(Paths.get(FILE_NAME), StandardCharsets.UTF_8).forEach(System.out::println);
道徳:あなたが現代のJavaを持っている場合-あなたはうまくいく必要があり、悪くはありません。
あなたの注意とコーディングの成功に感謝します!