2013-03-11 14 views
14

Gdy próbuję usunąć plik, który jest obecny w tomcat conf Server/Catalina/localhost z kodu java następnie file.delete() zawsze zwraca false . Ale jeśli sprawdzam plik przez funkcję file.exists(), zwraca true. Nie dostaję żadnego wyjątku. Pomóż nam, dlaczego tak się dzieje. Jakie jest rozwiązanie tego?java file.delete() zwraca false ale file.exists() zwraca true

+6

jeśli file.delete() zwróci false, oznacza to, że nie został usunięty. Tak więc file.exists() zwróci true. Nie ma nic złego – rajesh

+3

Sprawdź uprawnienia do pliku. – m0skit0

+0

Plik istnieje, ale nie można go usunąć. To wszystko. – Ingo

Odpowiedz

14

Gdy próbuję usunąć plik, który jest obecny w Tomcat conf/Catalina/localhost z kodu java następnie file.delete() zawsze zwraca false. Ale jeśli sprawdzam plik przez file.exists() funkcja zwraca true.

Najprawdopodobniej nie masz pozwolenie do usuwania plik (i) na serwerze. Sprawdź swoje uprawnienia.

f.delete() zwraca wartość false oznacza, że ​​nie było/nie może zostać usunięte, a f.exists() zwraca wartość true, więc plik istnieje, ale nie można go usunąć.

+1

Mam pełną zgodę serwera. Jeśli próbuję usunąć ten sam plik, kiedyś plik został usunięty, ale maksymalny czas nie może zostać usunięty, a funkcja zwraca wartość false. – vishal

+0

@vishal nie robisz, kiedy to nie działa. – Sajmon

+0

Czy istnieje inna metoda lub biblioteka, która pomoże rozwiązać ten problem. Ponieważ mam wymóg usunięcia pliku przy użyciu kodu. – vishal

0

Oznacza to, że plik jest istniejący, ale twój proces java nie mają uprawnień do usuwania that.That dlatego kasowania funkcja zwraca false

Returns: true if and only if the file or directory is successfully deleted; false otherwise

+2

Następnie proszę powiedzieć, jak przypisać uprawnienia do procesu java, aby usunąć plik. Ponieważ i tak muszę usunąć plik po kodzie. – vishal

9

Istnieje wiele powodów, dlaczego plik nie może zostać usunięte; może nie istnieć, może to być niepusty katalog, możesz nie zamknąć wszystkich zasobów z niego korzystających, a twój program może nie mieć na to zgody, żeby wymienić tylko kilka.

Niestety metoda File.delete() zapewnia bardzo mało informacji, dlaczego; to zależy od ciebie, żeby się pokłusować i zrozumieć. Ale są dobre wieści; w pierwszej kolejności nie chcesz używać File.

Java 7 wprowadzono nową java.nio.file pakiet, który jest o wiele bardziej wydajny dostęp do plików API. Przedstawia koncepcję abstrakcji Path i dzieli operacje betonowe na klasę Files, w szczególności zapewnia ona Files.delete(), która jest udokumentowana w celu podniesienia wyraźnych wyjątków opisujących powody, dla których usunięcie może zakończyć się niepowodzeniem.

Zastosowanie Path i Files; będziesz zadowolony, że to zrobiłeś.

2

Musisz zamknąć strumień przed usunięciem.

przykład -

fileInputStream.close(); 
file.delete(); 
2

Jeśli katalog nie jest pusty wtedy File.delete() metoda zwróci false bez rzuca błąd.

Musisz wyczyścić katalog przed usunięciem.

Powiązane problemy