首页 > 解决方案 > 如何使用 Java NIO createDirectories 方法设置目录所有者组?

问题描述

我正在使用 Java createDirectories 方法在测试目录中创建子目录,并设置文件权限。下面是代码;

String completeDestPath = "/home/base/test/test1/test2/test3/";
Path destinationPath = Paths.get(completeDestPath);

Set<PosixFilePermission> perms = PosixFilePermissions.fromString("rwxrwxrwx");
FileAttribute<Set<PosixFilePermission>> fa = PosixFilePermissions.asFileAttribute(perms);

Files.createDirectories(destinationPath, fa);

这工作正常。除此之外,我想将文件所有者组设置为新创建的目录。为此,我使用以下代码;

UserPrincipalLookupService lookupService = FileSystems.getDefault().getUserPrincipalLookupService();
GroupPrincipal group = lookupService.lookupPrincipalByGroupName("testgroup_1");

Files.getFileAttributeView(destinationPath, PosixFileAttributeView.class, LinkOption.NOFOLLOW_LINKS).setGroup(group);

但是在这里,我需要循环调用代码,或者递归调用每个新创建的目录,然后更改所有者组。是否有可能以更好的方式做到这一点,比如作为参数传递给 createDirectories 方法?

标签: javajava-8nio

解决方案


推荐阅读