java file.delete()返回false但file.exists()返回true

vis*_*hal 16 java file delete-file

当我尝试从java代码中删除tomcat服务器conf/Catalina/localhost中存在的文件时,file.delete()始终返回false.但是,如果我通过file.exists()函数检查文件,则返回true.我没有任何例外.请帮助我们为什么会这样.这是什么解决方案?

Sim*_*iak 16

当我尝试从java代码中删除tomcat服务器conf/Catalina/localhost中存在的文件时,file.delete()始终返回false.但是,如果我通过file.exists()函数检查文件,则返回true.

您很可能没有权限删除Server上的文件.检查您的权限.

f.delete()返回false表示它没有/无法删除并f.exists()返回true,因此文件存在但无法删除.

  • 我得到了解决方案.实际上创建文件时出错了.错误的我忘了关闭文件流.谢谢你的建议. (2认同)

dim*_*414 13

无法删除文件的原因有很多; 它可能不存在,它可能是非空目录,您可能没有关闭所有使用它的资源,并且您的程序可能没有这样做的权限,仅举几例.

不幸的是,该File.delete()方法提供的信息很少,为什么; 它非常适合你四处寻找并弄明白.但是有好消息; 你不想File在第一时间使用.

Java 7引入了新的java.nio.file包,它是一个更强大的文件访问API.它提供了抽象的概念,Path并将具体操作分离到Files类中,特别是它提供了Files.delete()记录以提出描述删除可能失败的原因的明确异常.

使用PathFiles; 你会很高兴的.


小智 6

您必须在删除之前关闭该流.

例如 -

fileInputStream.close();
file.delete();
Run Code Online (Sandbox Code Playgroud)