2015-09-01 6 views
5

मैं निम्नलिखित कोड स्निपेट का उपयोग कर दी गई फ़ाइल की अनुमति जांचने की कोशिश कर रहा हूं।फ़ाइल चेक अनुमति

public static void main(String[] args) { 
    try{ 
     FilePermission fp = new FilePermission("E:/test.txt", "read"); 
     AccessController.checkPermission(fp); 
     System.out.println("Ok to open socket"); 
    } catch (AccessControlException ace) { 
     System.out.println(ace); 
    } 

तो जब मैं इसे चलाने, यह मेरे निम्न अपवाद देता है:

java.security.AccessControlException: access denied ("java.io.FilePermission" "E:/test.txt" "read")

सभी अधिकार फ़ाइल पर सक्षम हैं, लेकिन यह फेंकता मुझे पहुँच अपवाद से इनकार किया।

+0

शायद नियमित रूप से फ़ाइल खोलें और file.canRead() का उपयोग करें? – alpert

+0

क्या जेवीएम सुरक्षा नीति है? –

+0

क्या आप 'E: \ test.text' के साथ प्रयास कर सकते हैं? – KDM

उत्तर

4

जाँच करने के लिए निम्नलिखित स्निपेट का उपयोग करें यदि आप फ़ाइल पढ़ सकते हैं:

boolean canRead = new java.io.File("E:/test.txt").canRead(); 

File.canRead जांच करता है कि SecurityManager (अगर कोई है कोई है) फ़ाइल और पढ़ने के लिए अगर आप में अधिकार पढ़ा है की अनुमति देता है फाइल सिस्टम।

AccessController.checkPermission(fp) का उपयोग केवल एक अपवाद नहीं फेंक देगा यदि कोई सुरक्षा संदर्भ है जो अनुमति का तात्पर्य है। यह तब नहीं है जब आप अपने उदाहरण में जावा ऐप शुरू करते हैं।

संबंधित मुद्दे