13
final File parentDir = new File("S:\\PDSPopulatingProgram"); 
parentDir.mkdir(); 
final String hash = "popupateData"; 
final String fileName = hash + ".txt"; 
final File file = new File(parentDir, fileName); 
file.createNewFile(); // Creates file PDSPopulatingProgram/popupateData.txt 

tôi đang cố gắng để tạo ra một tập tin trong một thư mục nhưng tôi nhận được ngoại lệ nhưjava.security.AccessControlException: Truy cập bị từ chối (java.io.FilePermission

java.security.AccessControlException: Access denied 

Tôi đang làm việc trong các cửa sổ môi trường. tôi có thể tạo một thư mục từ Windows Explorer, nhưng không phải từ Mã Java

Làm thế nào tôi có thể giải quyết vấn đề này

+0

Có vẻ như bạn không có quyền tạo tệp trên chia sẻ mạng đó. Bạn có thể tạo một tệp trong thư mục đó từ bên trong Windows Explorer hoặc dòng lệnh không? –

+0

Có, tôi có thể tạo một thư mục từ Windows Explorer, nhưng không phải từ Mã Java. Không biết tại sao? Bất kỳ trợ giúp sẽ được đánh giá cao. – ferhan

+0

Ứng dụng Java được khởi chạy như thế nào? Có phải nó đang chạy với các đặc quyền giống như phiên máy tính để bàn của bạn không? –

Trả lời

9

trong <jre location>\lib\security\java.policy thử của bạn thêm:.?

grant { permission java.security.AllPermission; };

Và xem nó có cho phép bạn không. Nếu vậy, bạn sẽ phải thêm các quyền chi tiết hơn.

Xem:

Java 8 Documentation for java.policy files

http://java.sun.com/developer/onlineTraining/Programming/JDCBook/appA.html

+1

, tôi đã thử điều này, nó vẫn không hoạt động. : ( – ferhan

+3

Điều đó không an toàn lắm. Duyệt internet và bất kỳ trang nào cũng có thể chạy bất kỳ mã nào trên máy của bạn. –

+2

@ TomHawtin-tackline này rõ ràng chỉ dành cho gỡ lỗi, đó là lý do tại sao tôi nói "Và xem nó có cho phép bạn không. Bạn sẽ phải thêm các quyền chi tiết hơn. " –

7

Mặc dù nó không được khuyến khích, nhưng nếu bạn thực sự muốn để cho bạn truy cập ứng dụng web một thư mục bên ngoài thư mục triển khai của nó. Bạn cần phải thêm sau đây cho phép trong java.policy tập tin (đường dẫn là như trong bài trả lời của Petey B)

permission java.io.FilePermission "your folder path", "write" 

Trong trường hợp của bạn nó sẽ là

permission java.io.FilePermission "S:/PDSPopulatingProgram/-", "write" 

đây /- nghĩa bất kỳ tập tin hoặc thư mục con bên trong thư mục này.

Cảnh báo: Nhưng bằng cách này, bạn đang mời một số rủi ro bảo mật.

+1

Cảm ơn đặc biệt đã đề cập đến"/- ". Trên cửa sổ, nó sẽ không hoạt động với các dấu gạch chéo ngược trong đường dẫn (như" \ - "). toán tử ký tự đại diện sẽ là "*", dẫn tôi vào cấu hình địa ngục ... – RobertG

+0

không hoạt động trong MAC, bằng cách sử dụng Java 8 – sumanth232