2015-09-01 7 views
5

Ich versuche, Erlaubnis der gegebenen Datei zu überprüfen, die das folgende Codeausschnitt benutzt.Dateiüberprüfungserlaubnis

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); 
    } 

Also, wenn ich es laufen, es gibt mir folgende Ausnahme:

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

Alle Rechte auf Datei aktivieren sind, aber es wirft mich Zugang Ausnahme verweigert.

+0

Vielleicht Datei regelmäßig öffnen und file.canRead() verwenden? – alpert

+0

Welche JVM-Sicherheitspolitik ist vorhanden? –

+0

Können Sie es mit 'E: \ test.text' versuchen? – KDM

Antwort

4

Verwenden Sie das folgende Snippet zu überprüfen, ob Sie die Datei lesen können:

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

File.canRead überprüft, ob der Securitymanager (falls vorhanden) können Sie die Datei und lesen, wenn Sie die Rechte in der gelesen Dateisystem.

Mit AccessController.checkPermission(fp) wird nur eine Ausnahme ausgelöst, wenn es einen Sicherheitskontext gibt, der die Berechtigung impliziert. Dies ist nicht der Fall, wenn Sie einfach wie in Ihrem Beispiel eine Java-App starten.