Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

java file.delete() returns false but file.exists() returns true

When I am trying to delete a file which is present in tomcat server conf/Catalina/localhost from java code then file.delete() always returns false. But if I am checking the file by file.exists() function it returns true. I am not getting any exception. Please help us why this is happening. What is the solution for this?

like image 1000
vishal Avatar asked Mar 11 '13 10:03

vishal


1 Answers

There are any number of reasons why a file cannot be deleted; it may not exist, it may be a non-empty directory, you may not have closed all resources using it, and your program may not have permission to do so, to name a few.

Unfortunately the File.delete() method provides very little information as to why; it's pretty much up to you to poke around and figure it out. But there's good news; you don't want to use File in the first place.

Java 7 introduced the new java.nio.file package which is a much more robust file access API. It provides the concept of an abstract Path and separates concrete operations into the Files class, in particular it provides Files.delete() which is documented to raise clear exceptions describing the reasons deletion might fail.

Use Path and Files; you'll be glad you did.

like image 75
dimo414 Avatar answered Nov 04 '22 00:11

dimo414