使用Java 7的Files类时,我遇到一个看似奇怪的问题。
在开始编写之前,我想确保目录和文件存在以避免FileNotFoundException的存在,并且根据JavadocscreateDirectory检查“文件是否存在以及目录的创建(如果不存在)”。

因此,如果先检查,当目录已经存在时,为什么我的以下代码有问题?

private void writeFile() throws IOException {
    // Make sure parent directory and file are ready
    File file = "mydirectory/my.file";
    File parent = file.getParentFile();
    if (parent != null)
        Files.createDirectory(parent.toPath()); // Why do I get FileAlreadyExistsException? =[
    Files.createFile(file.toPath());

    // Do some file writing stuff!
}

我知道我可以解决“如果没有文件就创建”的问题,但是我认为这种方法的全部目的就是为我做好一切!

异常数据:
java.nio.file.FileAlreadyExistsException: mydirectory
at sun.nio.fs.WindowsException.translateToIOException(Unknown Source)
at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
at sun.nio.fs.WindowsFileSystemProvider.createDirectory(Unknown Source)
at java.nio.file.Files.createDirectory(Unknown Source)

最佳答案

documentation

public static Path createDirectories(Path dir, FileAttribute<?>... attrs) throws IOException

“通过首先创建所有不存在的父目录来创建目录。与createDirectory方法不同,如果由于目录已经存在而无法创建目录,则不会引发异常。”

也许你可以用那个

关于java - Files.createDirectory(): FileAlreadyExistsException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16179102/

10-09 02:53