Filesクラスには2つの削除メソッドがあります。
delete(Path)メソッドは、ファイルを削除し、削除が失敗した場合は例外をスローします。 たとえば、ファイルが存在しない場合はNoSuchFileExceptionがスローされます。 次のようにこの例外をキャッチして、削除が失敗した理由を判断できます。
try {
Files.delete(path);
} catch (NoSuchFileException x) {
System.err.format("%s: no such file or directory%n", path);
} catch (DirectoryNotEmptyException x) {
System.err.format("%s not empty%n", path);
} catch (IOException x) {
//ファイル権限の問題はここでキャッチされます。
System.err.println(x);
}
deleteIfExists(Path)メソッドもファイルを削除しますが、ファイルが存在しない場合も例外はスローされません。 複数のスレッドでファイルの削除を行う場合に、対象のファイルを別のスレッドが先に削除したという理由だけで例外がスローされないようにするには、このメソッドが役立ちます。