我有filepath,userId和groupId,我如何在java中做lchown (用于符号链接),它将在所有unix风格上工作:Linux,redhat,hp-ux,rhel 5和Solaris
我尝试探索java.nio.file包,但找不到可以帮助我实现这一点的函数。
这是golang的等价物: os.Lchown(filePath,uid,gid) --如何在java中实现这一点?
发布于 2019-01-29 08:41:46
你应该看看这些:
https://docs.oracle.com/javase/8/docs/api/java/nio/file/attribute/FileOwnerAttributeView.html
https://docs.oracle.com/javase/8/docs/api/java/nio/file/attribute/PosixFilePermissions.html
https://docs.oracle.com/javase/8/docs/api/java/nio/file/attribute/PosixFileAttributes.html
https://docs.oracle.com/javase/8/docs/api/java/nio/file/attribute/GroupPrincipal.html
然后你就可以做这些事情了:
Path path = Paths.get("/home/toto/myfile.zip");
FileOwnerAttributeView foav = Files.getFileAttributeView(path,
FileOwnerAttributeView.class);
FileSystem fs = FileSystems.getDefault();
UserPrincipalLookupService upls = fs.getUserPrincipalLookupService();
//UserPrincipal new_user = upls.lookupPrincipalByName("brice");
UserPrincipal new_user = upls.lookupPrincipalByName("1005");
foav.setOwner(new_user);
GroupPrincipal new_group = upls.lookupPrincipalByGroupName("everyone");
Files.getFileAttributeView(path, PosixFileAttributeView.class, LinkOption.NOFOLLOW_LINKS).setGroup(new_group);
https://stackoverflow.com/questions/54416541
复制