2011-06-07 53 views
1

我需要设置将文件读取到操作系统的特定用户的权限,如何在Java中执行此操作?更改创建文件的权限,以便只有当前用户可以读取它

编辑: 该文件将只为运行该应用程序的用户创建权限,而不需要为一个用户设置读取权限,其他用户将无权读取该文件。

+1

Depends中更换CHMOD在操作系统上。 – Marcelo 2011-06-07 17:07:12

+0

windows和linux,是否存在一个通用API? – 2011-06-07 17:08:33

+0

你基本上必须执行os特定命令才能更改文件权限。你可以看看ncmathsadist的答案,看看这些方法是否足够你假装做的事情。 – Marcelo 2011-06-07 17:13:22

回答

0

,如果你想改变旧版本的Java文件权限,如Java 5,您可以使用此:在Windows

Runtime.getRuntime().exec("chmod 000 " + PATH + fileName); 

你必须与相应的CACLS.exe命令语法

3

在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 
+0

这将只授予单个用户的权限?另一个用户比运行该应用程序的用户?其他SO用户将有权限读取文件? – 2011-06-07 17:10:24

+1

这改变了文件的读取权限。第二个参数可用于将更改限制为仅限所有者。否则,所有权限(chomod + r)都会更改。 – ncmathsadist 2011-06-07 17:16:56

+1

你可以在Windows平台上显示类似的例子吗? – bbaja42 2011-06-07 17:43:10

1

如果您的目标是Windows Vista/7,请将您的JAR构建为EXE并嵌入一个请求管理员权限的清单。 如果它只是一个I/O问题,请使用默认的文件方法setReadable,setWritable,setExecutable :)

1

关于为单个用户授予权限,首先使用ncmathsadist的代码添加读取权限,然后更改该文件的所有者需要访问的人。

我发现它们用于更改所有者任务的Ant源代码。对于unix,这可以在org/apache/tools/ant/taskdefs/optional/unix/Chown.java的Ant源代码树中找到。您可能可以包含此内容并将其用作API调用以编程方式更改用户。

相关问题