PDA

View Full Version : [JAVA] Proprietà dei file


Oceans11
28-10-2006, 11:29
Vorrei conoscere, dato un file, i suoi attributi!

la classe java.io.file ha un metodo isHidden() che (indovina un pò?) restituisce true se il file ha l'attributo di "nascosto" attivo!
beh mi sarei aspettato dalla stessa classe anche metodi per gli altri attributi (read-write-execute) solo che non ci sono!(o sono diventato cieco :D )

ho trovato solo i metodi canRead() (e canWrite()) che (cito docs java)

"Tests whether the application can read (write) the file denoted by this abstract pathname."

da qualche parte ci stanno sti metodi??se non ci sono (non ci credo :( )
come posso fare?

PS: per i metodi canRead-Write: il risultato dei metodi dipende dal security manager per caso???non ho capito bene cosa significa "testa se l'applicazione può leggere (scrivere)

andbin
28-10-2006, 12:19
Vorrei conoscere, dato un file, i suoi attributi!

la classe java.io.file ha un metodo isHidden() che (indovina un pò?) restituisce true se il file ha l'attributo di "nascosto" attivo!
beh mi sarei aspettato dalla stessa classe anche metodi per gli altri attributi (read-write-execute) solo che non ci sono!(o sono diventato cieco :D )Java, per i soliti motivi legati alla "portabilità", è sempre stato abbastanza limitato per quanto riguarda il controllo completo del filesystem e in generale dell'hardware.

Per l'attributo di "read-only", c'è il metodo canWrite(). Ho fatto una prova su Windows e in effetti con un file marcato read-only, canWrite() ritorna false.

Per l'attributo di "execute", un metodo l'hanno messo (si chiama canExecute() ) ma .... solo a partire da Java 6! In questa nuova versione hanno messo anche i metodi setExecutable(), setReadable() e setWritable(), più altri metodi che credo siano più utili con i "volumi".

PGI-Bis
28-10-2006, 12:32
PS: per i metodi canRead-Write: il risultato dei metodi dipende dal security manager per caso???non ho capito bene cosa significa "testa se l'applicazione può leggere (scrivere)

Sì, dipende anche dal SecurityManager. Un file può essere leggibile ma le politiche di sicurezza impostate per l'esecuzione del programma possono impedire comunque la lettura del file.

In pratica per leggere un file si dovrebbe (potrebbe) dire:

File file = new File(blabla);
boolean canRead = false;
try {
canRead = file.canRead();
} catch(SecurityException ex) {
log("can't read " + file + " due to security restrictions");
}
if(canRead) {

}

Quando nella documentazione vedi un "throws SecurityException" significa che l'utente può aver scelto di impedire quella determinata azione (in sè o in quanto precondizione).

Oceans11
30-10-2006, 11:19
mitici ragà!!!grazie