我在我的java程序(在linux上运行)中创建了一个文件夹,其中包含File对象的mkdirs()函数.问题是该文件夹仅获取该组的读取权限.我需要它还具有写权限(以便以后能够删除它的文件).这样做的方法是什么?
小智 18
一个非常简单的解决方案是:
file.setExecutable(true, false);
file.setReadable(true, false);
file.setWritable(true, false);
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,file是一个File对象.
在创建文件集时,对文件的这些权限setExecutable(true)将允许您将该文件设置Executable为仅限所有者.如果您添加一个我在上面添加的参数代码file.setExecutable(true, false);将Executable false只为所有者创建,这意味着它将设置所有组/世界的权限.
测试并使用Debian和Windows XP.
Java nio可以帮助处理posix文件属性:https: //docs.oracle.com/javase/8/docs/api/java/nio/file/attribute/PosixFileAttributeView.html
Path path = ...
Set<PosixFilePermission> perms =
EnumSet.of(OWNER_READ, OWNER_WRITE, OWNER_EXECUTE, GROUP_READ, GROUP_WRITE);
Files.createFile(path, PosixFilePermissions.asFileAttribute(perms));
Run Code Online (Sandbox Code Playgroud)
Rob*_*lan -1
在 java 6 上,有一些方法允许您执行此操作,例如 setwriteable()。在以前版本的 java 上,您必须访问命令行才能执行 chmod 命令。
编辑:哎呀,我完全错了;我没有注意到您特别想要组权限。如果没有 Runtime.exec(),这些似乎无法设置。
@大卫:你是对的。
另一个想法:如果您有很多文件需要更改,那么编写一个 shell 脚本并从 runtime.exec() 调用它怎么样?