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
Odpowiedz
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ąć.
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
@vishal nie robisz, kiedy to nie działa. – Sajmon
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
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
Następnie proszę powiedzieć, jak przypisać uprawnienia do procesu java, aby usunąć plik. Ponieważ i tak muszę usunąć plik po kodzie. – vishal
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ś.
Musisz zamknąć strumień przed usunięciem.
przykład -
fileInputStream.close();
file.delete();
Jeśli katalog nie jest pusty wtedy File.delete()
metoda zwróci false bez rzuca błąd.
Musisz wyczyścić katalog przed usunięciem.
- 1. file.delete() zwraca false, mimo że file.exists(), file.canRead(), file.canWrite(), file.canExecute() wszystko zwraca true
- 2. PHP is_writable() zwraca wartość true, ale file_put_contents() zwraca wartość false
- 3. File.exists() zwraca wartość false, gdy plik istnieje
- 4. NSFileManager.defaultManager(). FileExistsAtPath zwraca wartość false zamiast true
- 5. QThread emituje gotowy() sygnał, ale funkcja isRunning() zwraca wartość true, a isFinished() zwraca wartość false
- 6. object.count zwraca 0. Ale object.any? zwraca true. Co się dzieje?
- 7. NetworkInfo.isConnected() zwraca true, ale nie ma połączenia
- 8. NSMutableArray zawieraObject zwraca true, ale nie powinno
- 9. PHP file_get_contents zwraca false
- 10. ScrollViewer.ChangeView zwraca false
- 11. Dlaczego os.path.isfile zwraca false?
- 12. MessageQueue.CanWrite zawsze zwraca true
- 13. Poczta zwraca wartość false
- 14. Immutable.Set.contains zwraca false
- 15. Kiedy ThreadPool.QueueUserWorkItem zwraca false
- 16. curl_exec() zawsze zwraca false
- 17. ScaleGestureDetector.onTouchEvent zawsze zwraca 'true'
- 18. Dlaczego is_numeric (NAN) zwraca TRUE?
- 19. Dlaczego self.class === MyClass zwraca false, a self.class == MyClass zwraca wartość true?
- 20. Dlaczego 128 == 128 zwraca wartość false, ale 127 == 127 zwraca wartość true podczas konwersji na opakowania całkowite?
- 21. X509Certificate2.Verify() zwraca false zawsze
- 22. TryParseExact zwraca wartość false, ale nie wiem, dlaczego
- 23. SoapClient Zwraca "NULL", ale __getLastResponse() zwraca XML
- 24. element jest obecny, ale `Set.contains (element)` zwraca false
- 25. Dlaczego String.Equals zwraca wartość false?
- 26. isAvailableForServiceType zawsze zwraca wartość true?
- 27. Kiedy mysql_query zwraca wartość false
- 28. PHP in_array() zawsze zwraca false
- 29. Punkt geograficzny SQL wewnątrz wieloboku, który nie zwraca wartości true w STIntersect (ale zwraca wartość true za pomocą geometrii)
- 30. Laravel Mail wysyła wiadomość e-mail, ale zwraca wartość false
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
Sprawdź uprawnienia do pliku. – m0skit0
Plik istnieje, ale nie można go usunąć. To wszystko. – Ingo