Create a new file if and only if not exists in Java

今まで Java で「ファイルがなかった時だけ作成する」をやる正しい方法がイマイチよく分かっていなかったのですが、

  1. File.createNewFile()
  2. Files.createFile()FileAlreadyExistsException をキャッチし無視する

のいずれかが正しいことを理解しました。

よくあるのが

void createFile(Path path) {
    if (Files.exists(path)) {
        return;
    }

    Files.createFile(path);
}

みたいにして、ファイルの作成の前に存在確認をする人がいますけど、存在確認と作成の間に他の処理に割り込まれる余地があってよくないコードです。 1 か 2 の方法だったら atomic にファイルを作成できるので、こっちを使いましょう。

Comments

comments powered by Disqus