移動

 ファイルの移動もコピーと同じように行うことができます。

リスト10●ファイル・ディレクトリの移動
            // ファイルの移動
            Path bar2 = fileSystem.getPath("dir2", "bar.txt");
            Files.move(bar, bar2);
 
            // ファイルの名前変更
            Files.move(baz, bar);
 
            // ディレクトリの名前変更
            Path dir3 = fileSystem.getPath("dir3");
            Files.move(dir2, dir3);

 ファイル・ディレクトリの移動はFilesクラスのmoveメソッドで行います。また、moveメソッドはファイル・ディレクトリの名前を変更することにも使用できます。

 copyメソッドと同様、moveメソッドでも移動元のファイル・ディレクトリが存在しなければNoSuchFileException例外がスローされ、異動先のファイル・ディレクトリが既に存在していればFileAlreadyExistsException例外がスローされます。

 ファイル・ディレクトリを上書きするのであれば、copyメソッドと同じように、moveメソッドの第3引数にStandardCopyOption.REPLACE_EXISTINGを指定します。しかし、ディレクトリを移動させる場合、REPLACE_EXISTINGを指定していても、異動先のディレクトリが空でなければ、java.nio.file.DirectoryNotEmptyException例外がスローされます。

 なお、ディレクトリのコピーと異なり、ディレクトリの移動はディレクトリに含まれるファイル・ディレクトリも一緒に移動させます。

削除

 削除はFilesクラスのdeleteメソッドとdeleteIfExistsメソッドで行います。

 2つのメソッドの違いは、deleteメソッドが削除するファイル・ディレクトリが存在しない場合にNoSucheFileException例外をスローするのに対し、deleteIfExistsメソッドは存在しない場合でも例外をスローしないという違いがあります。

 deleteIfExistsメソッドは削除に成功すればtrueが返り、ファイル・ディレクトリが存在しないため削除ができなかった場合はfalseが返ります。

 また、ディレクトリが空でない場合、deleteメソッドもしくはdeleteIfExistsメソッドをコールするとDirectoryNotEmptyException例外がスローされます。

リスト11●ファイル・ディレクトリの削除
            // ファイルの削除
            Files.delete(bar);
            Files.delete(foo2);
 
            // ファイルが存在していなくても、例外をスローしない
            Files.deleteIfExists(foo2);
 
            // ディレクトリの削除
            // ディレクトリの中身から削除しないと、例外がスローされる
            Path bar3 = fileSystem.getPath("dir3", "bar.txt");
            Files.delete(bar3);
            Files.delete(dir3);


この先は会員の登録が必要です。今なら有料会員(月額プラン)は12月末まで無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら