1

我有一塊Java在網絡映射驅動器上創建文件夾(Z :) 腳本在服務器A上執行(Windows 2008 R2,以用戶帳戶「serviceUser」運行)並在服務器B上創建文件夾(Windows 2003)創建文件夾的作品,但沒有繼承權限

服務器B上的根文件夾(映射爲Z :)具有特殊權限並允許「serviceUser」創建,修改,刪除,寫入等。權限被設置爲繼承到子對象,因此在Z:中創建的文件夾應該獲得與Z:本身相同的權限。

我的代碼創建內部Z 2個文件夾:像:

File destination = new File("z:\\folder_1\\"); 
File destination = new File("z:\\folder_1\\subfolder_1\\"); 

文件夾 「FOLDER_1」 得到正確的權限,但 「subfolder_1」 沒有。 創建這些文件夾之後,我需要創建一個文件,但作爲「subfolder_1」沒有得到許可,控制檯做File fileName = new File("z:\\folder_1\\subfolder_1\\filename.png");

時,我怎樣才能解決這個問題的報告"Access is denied"

回答

1

您是否嘗試過mkdirs命令?它將委託給操作系統在您的整個路徑中創建所有需要的目錄。

File destination = new File("z:\\folder_1\\subfolder_1"); 
destination.mkdirs(); 
+0

如果您首先檢查目錄是否存在,會不會更好? 'if(!destination.exists())destination.mkdir();' –

+0

是的,但那不在問題的範圍內。 –

+0

我不認爲這是OP的情況,但做這個預檢絕對沒有錯。 mkdirs調用會忽略給定路徑中的任何預先存在的目錄。 – Perception

1

嘗試在folder2上使用:setReadable()和/或setWritable()。這是控制文件權限的唯一便攜式純java方式。

+0

我剛剛嘗試過,與Access相同的問題在執行時被拒絕消息:'File destination = new File(FolderPath); destination.setReadable(true,false); destination.setWritable(true,false);' – user706058

0

我發現完成這項工作的唯一成功方法是將用戶帳戶設置爲具有完全控制權的服務器B的管理員。