diff --git a/lib-commonbase/source/java/ch/systemsx/cisd/common/io/Posix.java b/lib-commonbase/source/java/ch/systemsx/cisd/common/io/Posix.java index 054a6665639aa406098a5beac0d735e63f2fe28d..23e3c1483c864ac9d74648b8a493bd452539812a 100644 --- a/lib-commonbase/source/java/ch/systemsx/cisd/common/io/Posix.java +++ b/lib-commonbase/source/java/ch/systemsx/cisd/common/io/Posix.java @@ -104,6 +104,28 @@ public final class Posix } } + public static int getUid(String path) + { + try + { + return (int) Files.getAttribute(Path.of(path), "unix:uid"); + } catch (IOException e) + { + throw new IOExceptionUnchecked(e); + } + } + + public static int getGid(String path) + { + try + { + return (int) Files.getAttribute(Path.of(path), "unix:gid"); + } catch (IOException e) + { + throw new IOExceptionUnchecked(e); + } + } + public static String tryGetUserNameForUid(int uid) { try @@ -187,7 +209,7 @@ public final class Posix return gid; } - public String getSymbolicLinkOrNull() + public String tryGetSymbolicLink() { return symbolicLinkOrNull; } @@ -275,13 +297,12 @@ public final class Posix linkType = FileLinkType.OTHER; } long lastModified = Files.getLastModifiedTime(path).toMillis(); - int uid = (int) Files.getAttribute(path, "unix:uid"); - int gid = (int) Files.getAttribute(path, "unix:gid"); + int uid = getUid(pathAsString); + int gid = getGid(pathAsString); String symbolicLinkOrNull = null; if (linkType == FileLinkType.SYMLINK) { symbolicLinkOrNull = Files.readSymbolicLink(path).toString(); } - long size = Files.size(path); return new Stat(permissions, linkType, lastModified, uid, gid, symbolicLinkOrNull, size); } catch (IOException e)