2015-09-01 13 views
5

Próbuję sprawdzić uprawnienia danego pliku, korzystając z poniższego fragmentu kodu.Uprawnienie do sprawdzania pliku

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

Więc kiedy go uruchomić, to daje mi następujący wyjątek:

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

Wszystkie prawa są włączyć się w aktach, ale rzuca mi odmowa dostępu wyjątek.

+0

Może regularnie otwieraj plik i użyj file.canRead()? – alpert

+0

Jakie są zasady zabezpieczeń JVM? –

+0

Czy możesz spróbować z 'E: \ test.text'? – KDM

Odpowiedz

4

Użyj następujący fragment, aby sprawdzić, czy można odczytać pliku:

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

File.canRead sprawdza czy securityManager (jeśli istnieje) pozwala odczytać pliku i jeśli przeczytałeś praw w system plików.

Użycie nie spowoduje odrzucenia wyjątku tylko w przypadku kontekstu zabezpieczeń, który zgodnie z implikuje. Nie dzieje się tak, gdy po prostu uruchomisz aplikację Java, tak jak w twoim przykładzie.

Powiązane problemy