我在 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中的底层操作系统类型并有条件地执行这段代码吗?
如果你有一个Path对象,你可以使用该Path.getFileSystem()方法来获取底层文件系统对象。它有一个FileSystem.supportedFileAttributeViews()方法。如果文件系统支持 POSIX 文件属性(和权限),则返回的集将包含字符串"posix"。
| 归档时间: |
|
| 查看次数: |
2992 次 |
| 最近记录: |