28

我正在编写一个跨平台应用程序,该应用程序创建临时文件并将它们复制到另一个位置,每个人都需要读取它们。(默认情况下,只有所有者对临时文件具有读取权限。)我尝试使用 POSIX 文件权限,如下所示:

FileAttribute<Set<PosixFilePermission>> attrs =
  PosixFilePermissions.asFileAttribute(PosixFilePermissions.fromString("rw-r--r--"));
Path temp = Files.createTempFile(null, ".tmp", attrs);

但这会导致在非 POSIX 平台上出现异常:

java.lang.UnsupportedOperationException: 'posix:permissions' not supported as initial attribute

我想添加一个简单的检查,以便我可以在必要时使用文件权限,而不会破坏与其他平台的兼容性。

4

1 回答 1

46

深入挖掘 JDK 代码,这是用于 POSIX 的检查

java.nio.file.TempFileHelper

private static final boolean isPosix =
    FileSystems.getDefault().supportedFileAttributeViews().contains("posix");

您可以使用此检查。

于 2014-02-04T01:57:02.177 回答