相关疑难解决方法(0)

java.lang.UnsupportedOperationException:'posix:permissions'不支持作为Windows上的初始属性

我正在使用Java 7 File API.我编写了一个在Ubuntu上完美地创建目录的类,但是当我在Windows上运行相同的代码时,它会抛出错误:

Exception in thread "main" java.lang.UnsupportedOperationException: 'posix:permissions' not supported as initial attribute
    at sun.nio.fs.WindowsSecurityDescriptor.fromAttribute(Unknown Source)
    at sun.nio.fs.WindowsFileSystemProvider.createDirectory(Unknown Source)
    at java.nio.file.Files.createDirectory(Unknown Source)
    at java.nio.file.Files.createAndCheckIsDirectory(Unknown Source)
    at java.nio.file.Files.createDirectories(Unknown Source)
    at com.cloudspoke.folder_permission.Folder.createFolder(Folder.java:27)
    at com.cloudspoke.folder_permission.Main.main(Main.java:139)
Run Code Online (Sandbox Code Playgroud)

我的文件夹类代码是

package com.cloudspoke.folder_permission;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.attribute.FileAttribute;
import java.nio.file.attribute.PosixFilePermission;
import java.nio.file.attribute.UserPrincipal;
import java.util.Set;

public class Folder{
    // attributes required for creating a Folder
    private UserPrincipal owner;
    private Path folder_name;
    private FileAttribute<Set<PosixFilePermission>> attr;


    public Folder(UserPrincipal owner,Path folder_name,FileAttribute<Set<PosixFilePermission>> attr){
        this.owner=owner;
        this.folder_name=folder_name;
        this.attr=attr;
    }
    //invoking …
Run Code Online (Sandbox Code Playgroud)

java nio java-io java-7 unsupportedoperation

15
推荐指数
1
解决办法
2万
查看次数

如何在java中设置umask?

我是Java的新手.api中umask暴露在哪里?

java file-permissions

13
推荐指数
1
解决办法
1万
查看次数

Java - 无法创建具有777权限的目录(而不是775)

我正在尝试使用公共写权限创建目录.为了简化我希望它拥有777权限的东西.这是我的代码:

private static FileAttribute<Set<PosixFilePermission>> DIR_PERMISSIONS;
static {
    Set<PosixFilePermission> perms = new HashSet<>();
    perms.add(PosixFilePermission.OWNER_WRITE);
    perms.add(PosixFilePermission.OWNER_READ);
    perms.add(PosixFilePermission.OWNER_EXECUTE);
    perms.add(PosixFilePermission.GROUP_WRITE);
    perms.add(PosixFilePermission.GROUP_READ);
    perms.add(PosixFilePermission.GROUP_EXECUTE);
    perms.add(PosixFilePermission.OTHERS_WRITE);
    perms.add(PosixFilePermission.OTHERS_READ);
    perms.add(PosixFilePermission.OTHERS_EXECUTE);
    DIR_PERMISSIONS = PosixFilePermissions.asFileAttribute(perms);
}

private Path ensurePath(LocalDate localDate) throws IOException {
    String year = String.valueOf(localDate.getYear());
    String month = String.format("%02d", localDate.getMonthValue());
    Path path = Paths.get(rootDirectory, year, month);
    return Files.createDirectories(path, DIR_PERMISSIONS);
}
Run Code Online (Sandbox Code Playgroud)

有了rootDirectory=/tmp/data这应该创建文件夹一样/tmp/data/2016/01,各有777权限.相反,文件夹具有775权限(drwxrwxr-x.),因此它们缺少公共写入.为什么这样工作?也许JVM需要特殊的参数才能设置这样的权限?我的系统是Fedora 24,app是标准的Spring Boot应用程序,由maven插件启动.

java posix file-permissions nio file

6
推荐指数
1
解决办法
1673
查看次数