2011-06-07 13 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調用以編程方式更改用戶。

相關問題