更改已创建文件的权限,以便只有当前用户才能读取它

时间:2011-06-07 17:04:45

标签: java file-permissions

我需要设置读取文件的权限给操作系统的特定用户,我该怎么做呢?

编辑: 该文件仅对运行应用程序的用户具有权限,而不是为单个用户设置读取权限,其他用户将无权读取该文件。

4 个答案:

答案 0 :(得分:3)

在java.io.File中使用setExecutable,setReadable和setWritable方法。您可以使用它们来更改您拥有的文件的任何权限位。直接链接:http://download.oracle.com/javase/6/docs/api/java/io/File.html#setReadable%28boolean%29。 在MacOSX上进行测试会发现只更改了用户读取值。当程序

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

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

答案 3 :(得分:0)

如果要更改Java 5等旧Java版本的文件权限,可以使用:

Runtime.getRuntime().exec("chmod 000 " + PATH + fileName);
在Windows上,您必须使用适当的CACLS.exe命令语法

替换chmod
相关问题