【问题标题】:PosixFilePermission causing UnsupportedOperationException in javaPosixFilePermission 在 java 中导致 UnsupportedOperationException
【发布时间】:2018-04-27 00:20:45
【问题描述】:

我在 windows 和 unix 系统中部署了一个 java 代码。我必须添加文件权限才能将文件移动到特定目录(在 unix 中)。我为此使用 PosixFilePermission

                file1 = new File( expFilePath+ "/" + creationDate);
                file1.mkdir();
                Set<PosixFilePermission> perms = new HashSet<>();
                perms.add(PosixFilePermission.OWNER_READ);
                perms.add(PosixFilePermission.OWNER_WRITE);
                perms.add(PosixFilePermission.OWNER_EXECUTE);
                perms.add(PosixFilePermission.OTHERS_READ);
                perms.add(PosixFilePermission.OTHERS_WRITE);
                perms.add(PosixFilePermission.OTHERS_EXECUTE);
                perms.add(PosixFilePermission.GROUP_READ);
                perms.add(PosixFilePermission.GROUP_WRITE);
                perms.add(PosixFilePermission.GROUP_EXECUTE);
                try {
                    Files.setPosixFilePermissions(file1.toPath(), perms);
                } catch (IOException e1) {
                    e1.printStackTrace();
                }

上面的代码在unix中运行正常,但是在windows m/c中导致UnsupportedOperationException。在windows m/c中运行代码时,我必须手动注释这段代码。

有没有什么方法可以检测java中的底层操作系统类型并有条件地执行这段代码?

【问题讨论】:

标签: java unix posix


【解决方案1】:

如果你有Path对象,可以使用Path.getFileSystem()方法获取底层文件系统对象。它有一个FileSystem.supportedFileAttributeViews() 方法。如果文件系统支持 POSIX 文件属性(和权限),则返回的集合将包含字符串 "posix"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-10
    • 2020-04-13
    • 2015-12-31
    • 2019-07-06
    • 2018-01-11
    • 2018-06-27
    相关资源
    最近更新 更多