10

FilesJava 7 のクラスを使用すると、一見奇妙な問題が発生します。を回避するために書き込みを開始する前に、ディレクトリとファイルが存在することを確認したいのですが、 JavadocsFileNotFoundExceptionよると、「ファイルの存在と、存在しない場合のディレクトリの作成」をチェックします。createDirectory

最初にチェックすると、ディレクトリが既に存在するのに次のコードで問題が発生するのはなぜですか?

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)
4

4 に答える 4

27

ドキュメントから

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

「最初に存在しないすべての親ディレクトリを作成して、ディレクトリを作成します。createDirectory メソッドとは異なり、ディレクトリが既に存在するために作成できなかった場合、例外はスローされません。」

多分あなたはそれを使うことができます

于 2013-04-23T21:13:04.323 に答える