2015-09-01 15 views
5

Sto provando a verificare l'autorizzazione del file specificato utilizzando il seguente frammento di codice.Permesso di controllo file

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

Così, quando l'eseguo, mi dà seguente eccezione:

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

Tutti i diritti sono abilitare il file, ma getta mi accesso negato eccezione.

+0

Forse aprire regolarmente il file e utilizzare file.canRead()? – alpert

+0

Quale politica di sicurezza JVM è presente? –

+0

Puoi provare con 'E: \ test.text'? – KDM

risposta

4

utilizzare il seguente frammento di codice per verificare se è possibile leggere il file:

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

File.canRead controlla se il SecurityManager (se c'è) permette di leggere il file e se avete letto i diritti sul file system.

L'utilizzo di AccessController.checkPermission(fp) non genera un'eccezione se esiste un contesto di sicurezza che implica l'autorizzazione. Questo non è il caso quando si avvia semplicemente un'app Java come nell'esempio.