2015-07-22 20 views
5

Próbuję usunąć pliki, ale to nie działa lub czegoś brakuje. Oto mały test robię:Usuwanie określonego pliku

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

} 

I drukuje systemowe:

Abs ścieżka C: \ Users \ XXXX \ Documents \ PAI \ Tsoft \ test \ pacientes \ John. Smith.tds
istnieją prawdziwe
Nazwa John Smith.tds
Usuń fałszywe

I oczywiście nie usuwa plik, dlaczego? Jak mogę to sprawić?

+0

Pliki ".tds" są serializowane obiektami – Frank

+0

z powodu uprawnień? jeśli plik już istnieje, to może być przypadek. – vefthym

+0

Czy któraś z odpowiedzi tutaj pomoże: http://stackoverflow.com/questions/11056856/java-io-file-delete-failing-in-windows-7-java -newbie –

Odpowiedz

6

Być może nie masz uprawnień do usunięcia tego pliku. Możesz użyć metody Files.delete(), która wyrzuca wyjątek IOException, na wypadek gdyby coś poszło nie tak, aby zobaczyć, jaki jest prawdziwy problem.

+0

Dzięki, wydaje się działać, ale otrzymuję "java.nio.file.FileSystemException:", ponieważ plik jest używany przez inny proces. Im następujące po tym wpisie [link] (http://stackoverflow.com/questions/28905235/java-cannot-delete-file-being-used-by-another-process) – Frank

+0

@Frankovich tak, działa po kliknięciu linku które podałeś? jeśli nie, przyczyną może być otworzenie tego strumienia w innej części kodu bez zamykania go przed tą częścią. – vefthym

+1

Tak, musiałem zamknąć FileInputStream i ObjectInputStream podczas deserializacji obiektu w pliku. Dzięki za pomoc :) – Frank