diff --git a/src/java.base/unix/classes/sun/nio/fs/UnixFileAttributeViews.java b/src/java.base/unix/classes/sun/nio/fs/UnixFileAttributeViews.java index aadef1ea50f..a84a1b4547c 100644 --- a/src/java.base/unix/classes/sun/nio/fs/UnixFileAttributeViews.java +++ b/src/java.base/unix/classes/sun/nio/fs/UnixFileAttributeViews.java @@ -48,10 +48,12 @@ static class Basic extends AbstractBasicFileAttributeView { @Override public BasicFileAttributes readAttributes() throws IOException { try { - UnixFileAttributes attrs = - UnixFileAttributes.get(file, followLinks); + UnixFileAttributes attrs = UnixFileAttributes.get(file, followLinks); return attrs.asBasicFileAttributes(); } catch (UnixException x) { + if (x.errno() == ENOTDIR) { + x.setError(ENOENT); + } x.rethrowAsIOException(file); return null; // keep compiler happy } @@ -209,6 +211,9 @@ public UnixFileAttributes readAttributes() throws IOException { try { return UnixFileAttributes.get(file, followLinks); } catch (UnixException x) { + if (x.errno() == ENOTDIR) { + x.setError(ENOENT); + } x.rethrowAsIOException(file); return null; // keep compiler happy } diff --git a/src/java.base/unix/classes/sun/nio/fs/UnixFileSystemProvider.java b/src/java.base/unix/classes/sun/nio/fs/UnixFileSystemProvider.java index ed846354ea0..beb9a1af41b 100644 --- a/src/java.base/unix/classes/sun/nio/fs/UnixFileSystemProvider.java +++ b/src/java.base/unix/classes/sun/nio/fs/UnixFileSystemProvider.java @@ -322,8 +322,12 @@ public void checkAccess(Path obj, AccessMode... modes) throws IOException { mode |= X_OK; } int errno = access(file, mode); - if (errno != 0) + if (errno != 0) { + if (errno == ENOTDIR) { + errno = ENOENT; + } new UnixException(errno).rethrowAsIOException(file); + } } @Override