回答
File.delete()
如果您试图删除非空目录,或者在调用时命名文件根本不存在,则可以返回false
。
(如果有权限问题,则会引发SecurityException)
通常的原因是权限不足(虽然通常会抛出异常),试图删除一个不存在的文件或尝试删除非空目录。您完全确定您有权删除您要删除的文件吗?
某些进程可能正在读取/写入文件,因此它被锁定。或者,您的进程无权删除该文件。如果文件是目录,则必须首先删除其中的所有文件,然后才能删除该目录。最后是文件不存在的情况,所以delete方法将返回false。
Windows?使用Process Explorer搜索在文件上保留句柄(锁定)的所有进程(或者如果这是其中任何文件的目录)。
在Linux上,使用fuser
。
在Linux上打开文件不会阻止该文件被解除链接。 – sarnold 2010-07-26 10:12:44
你也可以在Linux上锁定文件,但很少使用。另外,NFS挂载可以防止文件被删除。 – 2010-07-26 10:16:52
File.delete()
可能无法删除文件的原因有很多,包括:
- 你没有正确的权限以删除文件
- 该文件所代表的目录和目录不是空
- 该文件被另一个进程(比方说在甚至通过相同的工艺未封闭
FileOutputStream
)锁定, - 的文件不存在
+1没有遇到未关闭的FOS,但:-) – 2010-07-26 10:17:56
@Aaron Digulla:未关闭的文件只会在某些操作系统(如Windows)上导致问题。在具有Posix文件系统语义的系统上,即使文件被其他东西打开,文件也可以始终未被链接。 – 2010-07-26 10:20:31
更多的可能性是1)该文件位于已安装的设备上只读,或2)您不幸遇到光盘I/O错误。 (这里也不是这样,但为了完整起见...) – 2010-07-26 11:11:45
您可能试图删除C:Drive中存在的任何文件,并且您可能没有权限执行此操作。尝试将它放在C:之外的任何其他驱动器中,然后运行您的代码。希望对你有效。 :)
我在我的代码中有同样的问题,并发现罪魁祸首实际上是一个未关闭的FileInputStream。关闭FIS后,我的文件删除没有任何问题。我希望这可以帮助别人。
- 1. 无法删除JAVA文件
- 2. 无法删除文件Java
- 3. 无法删除Java中的文件
- 4. JAVA,我无法删除空文件夹
- 5. 文件删除代码
- 6. 批量Java代码文件修改 - 删除方法,注释等
- 7. Team Foundation,删除了csproj文件。源代码控制无法签入/删除
- 8. 为什么此代码无法删除文件?
- 9. 无法从代码中删除一行?
- 10. 删除本地代码无法
- 11. MSDeploy无法删除文件
- 12. iOS:无法删除文件
- 13. C#无法删除文件
- 14. 无法删除文件
- 15. 无法删除文件夹
- 16. Linux无法删除文件
- 17. 无法删除XML文件
- 18. 代码压缩上传的文件无法删除临时文件
- 19. 无法删除文件与文件类
- 20. 无法删除文件夹,但文件可以删除
- 21. 无法删除属性java
- 22. Visual Studio代码永久删除文件
- 23. sed从文件中删除代码块
- 24. 如何从代码中删除文件?
- 25. 代码删除该文件夹中
- 26. 从C代码中删除文件
- 27. 删除* .cs,* .Designer.cs代码隐藏文件?
- 28. 自动删除.java文件中的代码行,脚本
- 29. 简单的文件删除代码未在Java中
- 30. 删除除运行删除代码的文件以外的所有文件
哪个用户是java运行的? 该用户是否需要删除该文件的权限? 你正在运行一个应用程序或一个小程序? – andcoz 2010-07-26 10:09:22