JavaDoc 読解 〜 Filesクラス 〜

昔は、FileReader, FileInputStreamを使用してやっていました。
今でも使用できますが、java.nio.files.Filesを使用する方法が
スタンダードになってきたかな?という感じです。

記述する内容は、昔よりも格段に減りました。

// FILEのパス
Path filePath = Paths.get(FILE_PATH);
List<String> lines = Files.readAllLines(filePath);

こんな感じで処理が実現します。
ちょっと省略してますが。。。

まぁ細かいところはこちらのソースをご覧ください。
ダウンロードして実行できるはずです。
※Macで作成しているためビルドパストか違っています。
ソースのみを取得して実行することをオススメします。
MacでEclipseを使用している人はプロジェクトごとPullして
おっけーです。

ちなみに、ファイルの読み込みなどを行うときに
「パスの指定」で結構つまづきます。
ルートになるパスがプロジェクトのディレクトリになるのですが

頭に「/」がついたりつかなかったりと。。。
とりあえず、「パスの使い方サンプル」を実装しました。

System.out.println("*** Paths Testing ***");
Path path = Paths.get("resources", "title.txt");
// 標準出力
path.forEach(System.out::println);
System.out.println("*** read File ***");
try {
   List<String> list = Files.readAllLines(path, Charset.defaultCharset());
   list.forEach(System.out::println);
} catch(IOException e) {
   e.printStackTrace();
}
  1. Paths.get(ファイルへのあるフォルダまでのパス, ファイル名);
    呼び出しはクラス名.メソッド名の様に呼びます(staticメソッドの呼び出し)
    の様に引数に値を設定します。 ファイルは以下にあります
    「project/resource/title.txt」
  2. 取得した「Path(Pathsとは別のクラスです)」からforEachメソッドを使用して
    System.out.printlnメソッドを渡しています。
    これはラムダ式の書き方でループで取得したpathの中身を上記のメソッドに渡す
    という処理になります
  3. ListでのforEach()です。これも上記と同様です。
    ラムダ式の書き方でclazz.xxx(
    コレクション内の要素変数(名前は自由) -> メソッドなどの処理);
    の様に記載します。
    サンプル、パターン1と2は同じ動きをします。

    // Pattern1
    xxxx.forEach(str -> method(str));
    // Pattern2
    xxxx.forEach(Class::method);