提交 c81ad67d 编写于 作者: A alanb

8032220: Files.createDirectories throws exception with confusing message for...

8032220: Files.createDirectories throws exception with confusing message for root directories that exist
Reviewed-by: chegar
上级 db1950ff
......@@ -752,9 +752,12 @@ public final class Files {
}
if (parent == null) {
// unable to find existing parent
if (se != null)
if (se == null) {
throw new FileSystemException(dir.toString(), null,
"Unable to determine if root directory exists");
} else {
throw se;
throw new IOException("Root directory does not exist");
}
}
// create directories
......
......@@ -375,11 +375,12 @@ public abstract class UnixFileSystemProvider
UnixPath dir = UnixPath.toUnixPath(obj);
dir.checkWrite();
int mode = UnixFileModeAttribute
.toUnixMode(UnixFileModeAttribute.ALL_PERMISSIONS, attrs);
int mode = UnixFileModeAttribute.toUnixMode(UnixFileModeAttribute.ALL_PERMISSIONS, attrs);
try {
mkdir(dir, mode);
} catch (UnixException x) {
if (x.errno() == EISDIR)
throw new FileAlreadyExistsException(dir.toString());
x.rethrowAsIOException(dir);
}
}
......
......@@ -493,6 +493,14 @@ public class WindowsFileSystemProvider
try {
CreateDirectory(dir.getPathForWin32Calls(), sd.address());
} catch (WindowsException x) {
// convert ERROR_ACCESS_DENIED to FileAlreadyExistsException if we can
// verify that the directory exists
if (x.lastError() == ERROR_ACCESS_DENIED) {
try {
if (WindowsFileAttributes.get(dir, false).isDirectory())
throw new FileAlreadyExistsException(dir.toString());
} catch (WindowsException ignore) { }
}
x.rethrowAsIOException(dir);
} finally {
sd.release();
......
......@@ -22,7 +22,7 @@
*/
/* @test
* @bug 4313887 6838333 8005566
* @bug 4313887 6838333 8005566 8032220
* @summary Unit test for miscellenous methods in java.nio.file.Files
* @library ..
*/
......@@ -76,6 +76,11 @@ public class Misc {
createDirectories(file.resolve("y"));
throw new RuntimeException("failure expected");
} catch (IOException x) { }
// the root directory always exists
Path root = Paths.get("/");
Files.createDirectories(root);
Files.createDirectories(root.toAbsolutePath());
}
/**
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册