2015-07-22 22 views
5

Sto tentando di eliminare i file ma non funziona o mi manca qualcosa. Ecco un piccolo test che sto facendo:Eliminazione del file specificato

private void deleteFromDir(String filename) { 
    String path = "./test/pacientes/" + filename + ".tds"; 

    File f = new File(path); 

    System.out.println("Abs path " + f.getAbsolutePath()); 
    System.out.println("Exist " + f.exists()); 
    System.out.println("Filename " + f.getName()); 
    System.out.println("Delete " + f.delete()); 

} 

E il sistema stampa:

percorso Abs C: \ Users \ XXXX \ Documenti \ PAI \ TSoft \ test \ pacientes \ John. Smith.tds
Exist vero
Nome file John Smith.tds
Eliminare falsa

E, naturalmente, non sta cancellando il file, perché? Come posso farlo funzionare?

+0

I file ".tds" sono oggetti serializzati – Frank

+0

a causa di autorizzazioni forse? se il file esiste già, questo potrebbe essere il caso – vefthym

+0

Alcune delle risposte qui aiutano: http://stackoverflow.com/questions/11056856/java-io-file-delete-failing-in-windows-7-java -newbie –

risposta

6

Forse non si dispone dell'autorizzazione per eliminare questo file. È possibile utilizzare il metodo Files.delete(), che genera un'eccezione IO, nel caso qualcosa vada storto, per vedere qual è il vero problema.

+0

Grazie, sembra funzionare, ma sto ottenendo "java.nio.file.FileSystemException:" perché il file è utilizzato da un altro processo. Sto seguendo questo post [collegamento] (http://stackoverflow.com/questions/28905235/java-cannot-delete-file-being-used-by-another-process) – Frank

+0

@Frankovich quindi, funziona dopo aver seguito il link che hai fornito? in caso contrario, la causa può essere che si apre questo flusso in un'altra parte del codice, senza chiuderlo prima di questa parte. – vefthym

+1

Sì, ho dovuto chiudere FileInputStream e ObjectInputStream per deserializzare l'oggetto nel file. Grazie per l'aiuto :) – Frank