Я использую NIO для установки разрешений для всех каталогов по пути, указанному ниже. Я пытаюсь дать 777 разрешений, однако часть «w» не применяется ... Что здесь не так?Разрешения на запись не устанавливаются при использовании NIO в unix
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.attribute.FileAttribute;
import java.nio.file.attribute.PosixFilePermission;
import java.nio.file.attribute.PosixFilePermissions;
import java.util.Set;
public class permissionTest {
public static void main(String [] args) throws IOException{
Path dirPath = Paths.get("./part1/part2/part3");
Set<PosixFilePermission> permissions = PosixFilePermissions.fromString("rwxrwxrwx");
System.out.print(permissions.toString() + ' ');
FileAttribute<Set<PosixFilePermission>> fileAttributes =
PosixFilePermissions.asFileAttribute(permissions);
Files.createDirectories(dirPath, fileAttributes);
}
}
$ ls -ld part1/
drwxr-xr-x 3 * *4096 Oct 30 02:48 part1/
Итак, мы можем сделать chmod -R, но мы не можем сделать то же самое в Java? – nikel
Рекурсивно вы можете изменить разрешения, да. Для этого вам необходимо реализовать ['FileVisitor'] (http://docs.oracle.com/javase/8/docs/api/java/nio/file/FileVisitor.html). – fge
Примечание: поскольку это сообщение я начал реализовывать [это] (https://github.com/fge/java7-fs-more); планируется рекурсивный chmod. Вклады приветствуются! – fge