2016-10-10 23 views
1

因此,我正在研究對文件執行一些操作的Java應用程序,應用程序僅在以管理員權限運行時才起作用,問題在於應用程序需要在羣集上使用(不應該)擁有管理員憑據的客戶端的機器。Java無法創建文件,除非管理員即使爲每個人設置了權限

try (InputStream in = url.openStream()) { 

      Files.copy(in, Paths.get("allDocs.zip"), StandardCopyOption.REPLACE_EXISTING); 

     } 

異常被扔在Files.copy行:java.nio.file.AccessDeniedException:allDocs.zip

的事情是,我試圖把文件在公用文件夾,在用戶家目錄中,應用程序數據,在應用程序安裝目錄中,我爲其設置每個用戶都完全控制的文件夾...我總是得到java.nio.file.AccessDeniedException,除非我用管理員帳戶運行程序。這是爲什麼發生?如果啓動Java進程的用戶有權寫入爲什麼Java進程不能?在此先感謝

+1

你確定你在Public,user.home,AppData等文件中寫入文件嗎?您的代碼只是將文件放在當前目錄中。 – VGR

+0

@VGR是的我很確定,因爲如果我將它作爲管理文件在這些地方創建的話 – user1902247

+0

您是否檢查過文件的權限? –

回答

1

您的代碼只是將文件寫入當前目錄。使用絕對路徑來避免這種情況;例如:

String home = System.getProperty("user.home"); 
Files.copy(in, Paths.get(home, "allDocs.zip"), StandardCopyOption.REPLACE_EXISTING); 
相關問題