ふとjava.nio.file.Filesを試してみたくなったので、書いたり読んだりしてみました。
特に意味のないコードですが、せっかくなのでメモがてら晒しておきます。
doc
https://docs.oracle.com/javase/jp/8/docs/api/java/nio/file/Files.html
import java.io.BufferedReader;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;
public class OpenFileService {
private String dir = "src/main/resources/sample";
private String filename = "test.txt";
void FilesSample() {
try {
// ディレクトリが存在するか確認、存在しない場合は作成
if (!Files.isDirectory(Paths.get(dir))) {
System.out.println("ディレクトリなし");
Files.createDirectory(Paths.get(dir));
} else {
System.out.println("ディレクトリあり");
}
// ファイルが存在するかの確認、存在しない場合は作成
if (!Files.exists(Paths.get(dir, filename))) {
System.out.println("ファイルなし");
Files.createFile(Paths.get(dir, filename));
} else {
System.out.println("ファイルあり");
}
List<String> listA = new ArrayList<>();
listA.add("あいうえお");
listA.add("かきくけこ");
listA.add("さしすせそ");
// ファイルに追記書き込み
// Files.write(Paths.get(dir, filename), listA,
// Charset.forName("UTF-8"), StandardOpenOption.APPEND);
// ファイルに書き込み
Files.write(Paths.get(dir, filename), listA,
Charset.forName("UTF-8"), StandardOpenOption.WRITE);
// ファイルの全行読み込み。
// 読み込み完了または例外が発生した場合、ファイルはクローズされるためクローズの記述不要。
List<String> line = Files.readAllLines(Paths.get(dir, filename),
Charset.forName("UTF-8"));
// 読み込んだ文字をコンソールに出力
for (String s : line) {
System.out.println(String.format("Files:%s", s));
}
String brLine;
try (BufferedReader br = Files.newBufferedReader(
Paths.get(dir, filename), StandardCharsets.UTF_8)) {
while ((brLine = br.readLine()) != null) {
System.out.println(String.format("brLine:%s", brLine));
}
}
;
try (Stream<String> stream = Files.lines(Paths.get(dir, filename),
StandardCharsets.UTF_8)) {
stream.forEach(streamLine -> {
System.out.println(String.format("Stream:%s", streamLine));
});
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
もう今の時代、あの長ったらしい書き方はしなくても良くなったんですね。