我是Java的新手。 api中umask暴露在哪里?
答案 0 :(得分:13)
你不能直接使用umask,因为Java是一个抽象,而umask是特定于POSIX的实现。但是您有以下API:
File f;
f.setExecutable(true);
f.setReadable(false);
f.setWritable(true);
还有一些API,check the docs。
如果您必须可以直接访问umask,可以通过JNI和chmod()
系统调用来实现,也可以使用exec("chmod")
生成新进程。
答案 1 :(得分:1)
java.nio.file.attribute.PosixFileAttributes
。
答案 2 :(得分:0)
另一种方法是使用暴露POSIX系统调用的第三方Java库; e.g。
这种方法的问题在于它本质上是不可移植的(不能在非POSIX兼容平台上工作),并且需要特定于平台的本机库......以及所需的全部内容。 / p>
答案 3 :(得分:0)
import java.nio.file.Files
import java.nio.file.attribute.PosixFilePermission
File file = new File("/some/path")
Files.setPosixFilePermissions(file.toPath(), [
PosixFilePermission.OWNER_READ,
PosixFilePermission.OWNER_WRITE
].toSet())