1. 概要

このクイックチュートリアルでは、Javaで新しいファイルを作成する方法を学習します。最初にNIOのFilesクラスとPathクラスを使用し、次にJavaFileおよびFileOutputStreamクラス、 Google Guava 、そして最後に Apache CommonsIOライブラリ。

この記事は、ここBaeldungの「Java –BacktoBasic」シリーズの一部です。

2. 設定

例では、ファイル名の定数を定義します。

private final String FILE_NAME = "src/test/resources/fileToCreate.txt";

また、クリーンアップ手順を追加して、各テストの前にファイルがまだ存在していないことを確認し、各テストの実行後にファイルを削除します。

@AfterEach
@BeforeEach
public void cleanUpFiles() {
    File targetFile = new File(FILE_NAME);
    targetFile.delete();
}

3. NIOの使用Files.createFile()

Java NIOパッケージのFiles.createFile()メソッドを使用してから始めましょう。

@Test
public void givenUsingNio_whenCreatingFile_thenCorrect() throws IOException {
    Path newFilePath = Paths.get(FILE_NAME);
    Files.createFile(newFilePath);
}

ご覧のとおり、コードはまだ非常に単純です。 現在、古いファイルの代わりに新しいパスインターフェースを使用しています。

ここで注意すべきことの1つは、新しいAPIが例外をうまく利用していることです。 ファイルがすでに存在する場合は、戻りコードを確認する必要がなくなります。 代わりに、FileAlreadyExistsExceptionを取得します。

java.nio.file.FileAlreadyExistsException: <code class="language-java">src/test/resources/fileToCreate.txt at sun.n.f.WindowsException.translateToIOException(WindowsException.java:81)

4. File.createNewFile()を使用する

次に、java .io.Fileクラスを使用して同じを実行する方法を見てみましょう:

@Test
public void givenUsingFile_whenCreatingFile_thenCorrect() throws IOException {
    File newFile = new File(FILE_NAME);
    boolean success = newFile.createNewFile();
    assertTrue(success);
}

この操作を成功させるには、ファイルが存在していてはならないことに注意してください。 ファイルが存在する場合、 createNewFile()操作はfalseを返します。

5. FileOutputStreamを使用する

新しいファイルを作成する別の方法は、java.io.FileOutputStreamを使用することです。

@Test
public void givenUsingFileOutputStream_whenCreatingFile_thenCorrect() throws IOException {
    try(FileOutputStream fileOutputStream = new FileOutputStream(FILE_NAME)){
    }
}

この場合、FileOutputStreamオブジェクトをインスタンス化すると新しいファイルが作成されます。 という名前のファイルがすでに存在する場合は、で上書きされます。 ただし、既存のファイルがディレクトリであるか、何らかの理由で新しいファイルを作成できない場合は、FileNotFoundExceptionが発生します。

さらに、 try-with-resources ステートメントを使用して、ストリームが適切に閉じられていることを確認していることに注意してください。

6. グアバの使用

新しいファイルを作成するためのGuavaソリューションは、簡単なワンライナーでもあります。

@Test
public void givenUsingGuava_whenCreatingFile_thenCorrect() throws IOException {
    com.google.common.io.Files.touch(new File(FILE_NAME));
}

7. ApacheCommonsIOの使用

Apache Commonsライブラリは、Linuxの「 touch」ユーティリティと同じ動作を実装するFileUtils.touch()メソッドを提供します。

したがって、新しい空のファイル、またはファイルとそのファイルへのフルパスをファイルシステムに作成します。

@Test
public void givenUsingCommonsIo_whenCreatingFile_thenCorrect() throws IOException {
    FileUtils.touch(new File(FILE_NAME));
}

これは前の例とは少し異なる動作をすることに注意してください。ファイルがすでに存在する場合、操作は失敗せず、単に何もしません。

これで、Javaで新しいファイルを作成する4つの簡単な方法ができました。

8. 結論

この記事では、Javaでファイルを作成するためのさまざまなソリューションについて説明しました。 JDKおよび外部ライブラリの一部であるクラスを使用しました。

例のコードは、GitHubから入手できます。