LoginSignup
17
18

More than 5 years have passed since last update.

java.nio.file.Filesでファイルを書いたり読んだり。

Last updated at Posted at 2017-11-04

ふと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();
        }
    }
}

もう今の時代、あの長ったらしい書き方はしなくても良くなったんですね。

17
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
18