Entra

View Full Version : Problema cancellare un file con 0 byte


gaiapuffo
25-08-2014, 09:29
Ciao sto usando un programma per gestione dati che mi va a creare un certo file, il problema e che se vi è errore crea lo stesso il file con 0 byte(questo file non ha nessuna estensione)...Provo quindi ad andarlo in seguito nello stesso processo a cancellarlo usando java, prendo il file e faccio

file.delete(); ma non lo cancella, ma se faccio file.getName() trovo il nome del file, quindi il file è in possesso di File file e non capisco quindi perchè non lo cancelli
mi da come risultato dell'operazione false..forse perchè i byte sono 0??? ma se io non voglio che mi rimanga un file nel file system con 0 byte?

Uso questo codice

File file = new File(context.ldap_pathFolder+context.ldap_file_name);
System.out.println("Controlla nome file"+" "+file.getName());
boolean s=file.delete();
System.out.println(s);

wingman87
25-08-2014, 10:02
Hai controllato che il file non sia in readonly? E l'utenza con cui esegui il tuo programma ha il permesso di cancellare il file?
Tu stai usando questo metodo:
http://docs.oracle.com/javase/7/docs/api/java/io/File.html#delete%28%29
Nella documentazione consiglia di utilizzare quest'altro, per ottenere un'eccezione con la descrizione dell'errore:
http://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html#delete%28java.nio.file.Path%29

gaiapuffo
25-08-2014, 10:08
in teoria l'errore che provo per mia volonta per test avviene quando apro il db e vado a inserire il contenuto in un file e quindi questo dovrebbe essere aperto in scrittura quando avviene l'errore, se faccio

System.out.println(file.canWrite());
System.out.println(file.canRead());
System.out.println(file.canExecute());
System.out.println(file.exists());
System.out.println(file.delete());
mi dice che è tutto a true, tranne l'ultimo quando cancello

wingman87
25-08-2014, 10:41
Prova il secondo metodo che ti ho linkato, così invece di restituirti semplicemente false ti lancia un'eccezione con un minimo di descrizione dell'errore.