我需要設置將文件讀取到操作系統的特定用戶的權限,如何在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