# 删除文件或目录

> 原文： [https://docs.oracle.com/javase/tutorial/essential/io/delete.html](https://docs.oracle.com/javase/tutorial/essential/io/delete.html)

您可以删除文件，目录或链接。使用符号链接，链接将被删除，而不是链接的目标。对于目录，目录必须为空，否则删除失败。

`Files`类提供两种删除方法。

如果删除失败， [`delete(Path)`](https://docs.oracle.com/javase/8/docs/api/java/nio/file/Files.html#delete-java.nio.file.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) {
    // File permission problems are caught here.
    System.err.println(x);
}

```

[`deleteIfExists(Path)`](https://docs.oracle.com/javase/8/docs/api/java/nio/file/Files.html#deleteIfExists-java.nio.file.Path-) 方法也删除文件，但如果文件不存在，则不会抛出异常。如果有多个线程删除文件并且您不想仅因为一个线程首先执行此操作而导致异常，则静默失败非常有用。