Как вы можете изменить группу файла с помощью java API? Я знаю, что я могу использовать Files.setOwner
(Java 7), чтобы установить владельца файла.Изменение группы unix-файла с использованием java
Как я могу изменить группу для файла в Unix Os?
Решение:
UserPrincipalLookupService lookupservice = FileSystems.getDefault()
.getUserPrincipalLookupService();
final UserPrincipal superuser = lookupservice
.lookupPrincipalByName("superuser");
final GroupPrincipal servicesGroup = lookupservice
.lookupPrincipalByGroupName("services");
FileVisitor<Path> visitor = new FileVisitor<Path>() {
@Override
public FileVisitResult postVisitDirectory(Path dir,
IOException exc) throws IOException {
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult preVisitDirectory(Path file,
BasicFileAttributes attrs) throws IOException {
setOwnerAndGroupForFile(superuser, servicesGroup, file);
File[] listFiles = file.toFile().listFiles();
for (File file1 : listFiles) {
Files.walkFileTree(file1.toPath(), this);
}
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult visitFile(Path file,
BasicFileAttributes attrs) throws IOException {
setOwnerAndGroupForFile(superuser, servicesGroup, file);
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult visitFileFailed(Path file,
IOException exc) throws IOException {
outputError("Problems while accesing file " + file);
return FileVisitResult.CONTINUE;
}
private void setOwnerAndGroupForFile(final UserPrincipal superuser,
final GroupPrincipal servicesGroup, Path file)
throws IOException {
Files.setOwner(file, superuser);
PosixFileAttributeView fileAttributeView = Files
.getFileAttributeView(file, PosixFileAttributeView.class);
fileAttributeView.setGroup(servicesGroup);
}
};
Files.walkFileTree(Paths.get(dataDirectoryFile.toURI()), visitor);
Возможный дубликат http://stackoverflow.com/questions/13241967/change-file-owner-group -under-linux-with-java-nio-files – StockB
Почему: 'File [] listFiles = file.toFile(). listFiles(); for (File file1: listFiles) {Files.walkFileTree (file1.toPath(), this); } '??? –
Возможный дубликат [Можно ли установить «группу» файла?] (Http://stackoverflow.com/questions/18686099/is-it-possible-to-set-the-group-of-a- файл) – Raedwald