创建具有该组写入权限的目录

12 java linux

我在我的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,因为此解决方案仅为所有者或所有人设置权限. (2认同)

Syl*_*ain 9

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)

  • PosixFilePermission仅适用于Portable操作系统.PosixFilePermission不适用于Windows系统 (2认同)

Rob*_*lan -1

在 java 6 上,有一些方法允许您执行此操作,例如 setwriteable()。在以前版本的 java 上,您必须访问命令行才能执行 chmod 命令。

Java 6 SE 文件类文档。

编辑:哎呀,我完全错了;我没有注意到您特别想要组权限。如果没有 Runtime.exec(),这些似乎无法设置。

@大卫:你是对的。

另一个想法:如果您有很多文件需要更改,那么编写一个 shell 脚本并从 runtime.exec() 调用它怎么样?