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