如何在java中设置umask?

如何在java中设置umask?,java,file-permissions,Java,File Permissions,我是Java新手。在api中umask暴露在哪里?您不能直接处理umask,因为Java是一种抽象,并且umask是特定于POSIX实现的。但您有以下API: File f; f.setExecutable(true); f.setReadable(false); f.setWritable(true); 还有一些可用的API 如果您必须直接访问umask,可以通过JNI和chmod()syscall进行访问,或者使用exec(“chmod”)

我是Java新手。在api中umask暴露在哪里?

您不能直接处理umask,因为Java是一种抽象,并且umask是特定于POSIX实现的。但您有以下API:

File f;
f.setExecutable(true);
f.setReadable(false);
f.setWritable(true);
还有一些可用的API


如果您必须直接访问umask,可以通过JNI和
chmod()
syscall进行访问,或者使用
exec(“chmod”)
另一种方法是使用公开POSIX系统调用的第三方java库;e、 g

  • 图书馆
  • 等等(谷歌的“JavaPOSIX库”)

这种方法的问题在于它本质上是不可移植的(在非POSIX兼容的平台上不起作用),并且需要特定于平台的本机库。。。所有这些都很有意思,谢谢。我想我可以使用JNI调用umask(2),那么?@eeee当然可以,但是您必须将您的JNI模块部署到您想要支持的所有平台,因为它几乎是根据定义依赖于平台的。@当然可以。老实说,我很惊讶没有人为Java制作一个公开所有posix接口的模块。我是说,那不可能是对的,对吧?如果没有这种东西,人们如何在java中执行系统活动?@eeee java 7(尚未推出)中提供了新的API,在包
java.nio.file
中。确切地说,在包
java.nio.file.attribute
中。我没有找到任何专门用于设置umask的函数,只有文件权限。不,这是设置文件权限,而不是设置掩码。
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())