Filesクラス(というかJava8)に初めて触る

#初めて触ってみたFilesクラス
初めの一歩にすらなってないかもしれませんが、ちょっとずつやっていこうと思います。
2019/04/19　ちょっと更新。

#読込ファイル内容
```input_01.csv
"ID","クラス","名前"
"0001","セイバー","アルトリア"
"0002","キャスター","メディア"
"0003","バーサーカー","ヘラクレス"
```

```input_02.csv
"ID","艦種","名前"
"0001","戦艦","長門"
"0002","軽巡洋艦","阿武隈"
"0003","駆逐艦","陽炎"
```

#ソース

```java:FileInOutFirst.java
package com.otamesi;

import java.io.BufferedReader;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;

public class FileInOutFirst{

	/**
	 * 初めてのFilesクラス。
	 *
	 */
	public static void main(String args[]) throws Exception{

		FileInOutFirst fileInOutFirst = new FileInOutFirst();
		fileInOutFirst.inOut01();
		fileInOutFirst.inOut02();
		fileInOutFirst.inOut03();
		fileInOutFirst.inOut04();
		fileInOutFirst.inOut05();
	}

	/**
	 * その1。<br>
	 * とりあえず標準出力に出してみる。
	 *
	 */
	private void inOut01() throws Exception {
		//SJISのファイルを読み込み
		List<String> input = Files.readAllLines(Paths.get("D:/", "input_01.csv"), Charset.forName("SJIS"));
		System.out.println("その1");
		input.forEach(line -> System.out.println(line));
	}

	/**
	 * その2。<br>
	 * とりあえず標準出力に出してみる(UTF-8)。
	 *
	 */
	private void inOut02() throws Exception {
		//UTF-8のファイルを読み込み
		List<String> input = Files.readAllLines(Paths.get("D:/", "input_02.csv"), StandardCharsets.UTF_8);

		System.out.println("その2");
		input.forEach(line -> System.out.println(line));
	}

	/**
	 * その3。<br>
	 * とりあえず標準出力に出してみる(UTF-8)。
	 *
	 */
	private void inOut03() throws Exception {
		//UTF-8のファイルを読み込み
		List<String> input = Files.readAllLines(Paths.get("D:/", "input_03.csv"), StandardCharsets.UTF_8);

		System.out.println("その3");
		input.forEach(System.out::println);
	}

	/**
	 * その4。<br>
	 * とりあえず標準出力に出してみる(UTF-8)。
	 *
	 */
	private void inOut04() throws Exception {
		//UTF-8のファイルを読み込み
		List<String> input = Files.readAllLines(Paths.get("D:/", "input_03.csv"), StandardCharsets.UTF_8);
		List<String> input2 = new ArrayList<String>();
		System.out.println("その4");
		input.forEach(input2::add);
		input2.forEach(System.out::println);
	}

	/**
	 * その5。<br>
	 * newBufferedReaderを利用(サイズが大きいファイル用)
	 *
	 */
	private void inOut05() throws Exception {
		System.out.println("その5");
		Path file = Paths.get("D:/", "input_03.csv");
		try (BufferedReader br = Files.newBufferedReader(file, StandardCharsets.UTF_8)) {
			String text;
			while ((text = br.readLine()) != null) {
				System.out.println(text);
			}
		}
	}
}
```

#出力結果
その1
"ID","クラス","名前"
"0001","セイバー","アルトリア"
"0002","キャスター","メディア"
"0003","バーサーカー","ヘラクレス"
その2
"ID","艦種","名前"
"0001","戦艦","長門"
"0002","軽巡洋艦","阿武隈"
"0003","駆逐艦","陽炎"

#とりあえずやってみて
forEachメソッドも初なのですがすごいスッキリとループが書けるんですね！
あとエンコードも定数が用意されていて便利(残念ながらSJISは無いみたいですが)。

なお、ファイルの文字コードと別の文字コードをパラメーターに指定すると
下記の例外が発生。遭遇する機会があるかもしれないので覚えとこう・・・。

```
Exception in thread "main" java.nio.charset.MalformedInputException: Input length = 1
	at java.nio.charset.CoderResult.throwException(CoderResult.java:281)
	at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:339)
	at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178)
	at java.io.InputStreamReader.read(InputStreamReader.java:184)
	at java.io.BufferedReader.fill(BufferedReader.java:161)
	at java.io.BufferedReader.readLine(BufferedReader.java:324)
	at java.io.BufferedReader.readLine(BufferedReader.java:389)
	at java.nio.file.Files.readAllLines(Files.java:3205)
```