ファイルを作成する(Files.createFile)

Files クラスで用意されている createFile メソッドを使用することで、指定したディレクトリの中にファイルを新しく作成することができます。ここでは Java を使ってファイルを作成する方法について解説します。

(Last modified: )

新しいファイルを作成する

新しいファイルを作成するには Files クラスで用意されている createFile メソッドを使用します。 createFiled メソッドはクラスメソッドです。書式は次のとおりです。

public static Path createFile(Path path, FileAttribute<?>... attrs) throws IOException

パラメータ:
path - 作成するファイルへのパス
attrs - ファイルの作成時に原子的に設定されるファイル属性のオプションのリスト

戻り値:
ファイル

例外:
UnsupportedOperationException - ファイルの作成時に原子的に設定できない属性が配列に含まれる場合
FileAlreadyExistsException - その名前のファイルがすでに存在する場合(オプションの固有例外)
IOException - 入出力エラーが発生した場合または親ディレクトリが存在しない場合
SecurityException - デフォルト・プロバイダで、セキュリティ・マネージャがインストールされている場合は、checkWriteメソッドが呼び出されて新しいファイルへの書込みアクセスがチェックされます

1 番目の引数に作成するファイルを表す Path オブジェクトを指定します。省略可能な 2 番目の引数は作成するファイルの属性を表すリストを指定します。メソッドを実行すると、指定したパスに空のファイルを作成します。

※ Path オブジェクトを使ってファイルやディレクトリを表す方法については「Pathオブジェクトを使ってファイルやディレクトリを表す」を参照されてください。

作成しようとするファイルが既に存在している場合は FileAlreadyExistsException 例外が発生します。また指定したディレクトリが存在しない場合は IOException が発生します。

次のサンプルをみてください。

Path p = Paths.get("C:/code/java/file/report.txt");

try{
  Files.createFile(p);
}catch(IOException e){
  System.out.println(e);
}

C:\code\java\file ディレクトリの中に report.txt というファイルを作成します。作成しようとしているファイルが既に存在すると例外が発生します。

サンプルコード

それでは簡単なサンプルプログラムを作って試してみます。テキストエディタで次のように記述したあと、 JSample4-1.java という名前で保存します。

import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.Files;
import java.io.IOException;

class JSample4_1{
  public static void main(String[] args){
    Path p = Paths.get("C:/code/java/file/report.txt");

    try{
      Files.createFile(p);
    }catch(IOException e){
      System.out.println(e);
    }
  }
}

コンパイルを行います。

javac -encoding UTF-8 JSample4_1.java

その後で、次のように実行してください。

java JSample4_1

新しいファイルを作成する(1)

指定したパスが示すファイルを新しく作成しました。

新しいファイルを作成する(2)

なおファイルが存在している状態でもう一度同じプログラムを実行すると例外が発生します。

新しいファイルを作成する(3)

-- --

Java を使ってファイルを作成する方法について解説しました。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。