我需要设置将文件读取到操作系统的特定用户的权限,如何在Java中执行此操作?更改创建文件的权限,以便只有当前用户可以读取它
编辑: 该文件将只为运行该应用程序的用户创建权限,而不需要为一个用户设置读取权限,其他用户将无权读取该文件。
我需要设置将文件读取到操作系统的特定用户的权限,如何在Java中执行此操作?更改创建文件的权限,以便只有当前用户可以读取它
编辑: 该文件将只为运行该应用程序的用户创建权限,而不需要为一个用户设置读取权限,其他用户将无权读取该文件。
,如果你想改变旧版本的Java文件权限,如Java 5,您可以使用此:在Windows
Runtime.getRuntime().exec("chmod 000 " + PATH + fileName);
你必须与相应的CACLS.exe命令语法
在java.io.File中使用setExecutable,setReadable和setWritable方法。您可以使用这些来更改您拥有的文件的任何权限位。直接链接:http://download.oracle.com/javase/6/docs/api/java/io/File.html#setReadable%28boolean%29。 在MacOSX Revels上测试只有用户读取值发生变化。当程序
import java.io.File;
public class Test
{
public static void main(String[] args)
{
File f = new File("test.txt");
f.setReadable(true);
}
}
以下情况发生。
$ touch test.txt
$ chmod 000 test.txt
$ javac Test.java
$ java Test
$ ls -l test.txt
-r-------- 1 morrison staff 0 Jun 7 13:28 test.txt
这将只授予单个用户的权限?另一个用户比运行该应用程序的用户?其他SO用户将有权限读取文件? – 2011-06-07 17:10:24
这改变了文件的读取权限。第二个参数可用于将更改限制为仅限所有者。否则,所有权限(chomod + r)都会更改。 – ncmathsadist 2011-06-07 17:16:56
你可以在Windows平台上显示类似的例子吗? – bbaja42 2011-06-07 17:43:10
如果您的目标是Windows Vista/7,请将您的JAR构建为EXE并嵌入一个请求管理员权限的清单。 如果它只是一个I/O问题,请使用默认的文件方法setReadable,setWritable,setExecutable :)
关于为单个用户授予权限,首先使用ncmathsadist的代码添加读取权限,然后更改该文件的所有者需要访问的人。
我发现它们用于更改所有者任务的Ant源代码。对于unix,这可以在org/apache/tools/ant/taskdefs/optional/unix/Chown.java的Ant源代码树中找到。您可能可以包含此内容并将其用作API调用以编程方式更改用户。
Depends中更换CHMOD在操作系统上。 – Marcelo 2011-06-07 17:07:12
windows和linux,是否存在一个通用API? – 2011-06-07 17:08:33
你基本上必须执行os特定命令才能更改文件权限。你可以看看ncmathsadist的答案,看看这些方法是否足够你假装做的事情。 – Marcelo 2011-06-07 17:13:22