PosixFilePermission 在 java 中导致 UnsupportedOperationException

Sum*_*osh 4 java unix posix

我在 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();
                }
Run Code Online (Sandbox Code Playgroud)

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

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

Flo*_*mer 5

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