Java文件删除错误

时间:2013-01-30 12:16:05

标签: java

我想删除java中的文件。生成此结果。我该如何删除该文件。这是什么原因。

File l_file = new File(path);
System.out.println(l_file.exists()); //returns true
System.out.println(l_file.delete()); //returns false

谢谢。

6 个答案:

答案 0 :(得分:1)

文件删除失败的原因有很多。例如,如果另一个进程持有句柄,或者您没有权限删除此文件。在这两种情况下,您都可以检查文件是否存在,但不能删除它。

答案 1 :(得分:0)

无法删除文件的原因有很多。最可能的是文件在另一个进程中打开,或者您的进程启动的权限少于删除该文件所需的权限。

答案 2 :(得分:0)

第一个原因是path可以是目录

来自javadoc File#delete()

If this pathname denotes a directory, then the directory must be empty in order to be deleted.

检查路径是否为空目录:

if (l_file.isDirectory()) {
   String[] files = l_file.list();
      if (files.length > 0) {
         System.out.println("The " + l_file.getPath() + " is not empty!");
      }
}

您无法删除path的另一个原因是您没有权限

检查你的许可:

if (l_file.canWrite())
   l_file.delete();

答案 3 :(得分:0)

也许您可以尝试使用File方法检查它是否是文件(而不是目录)的权限:

boolean isFile() // if it is a directory it must be empty
boolean canWrite()
boolean canRead()
boolean canExecute()

此外,正如您可以在Java API中阅读的那样:“在某些操作系统上,当该文件被打开并被该Java虚拟机或其他程序使用时,可能无法删除该文件。”

如果您使用的是Linux,则可以尝试lsof <file_name>以了解哪个进程已打开此文件。

答案 4 :(得分:0)

您还可以尝试FileChannel.lock()FileChannel.tryLock()查看是否可以在删除锁定之前获取锁定。

答案 5 :(得分:0)

有两种解决方法。

  1. 转到文件并将其属性更改为完全控制
  2. 如果您打开了类PrintWriter或Scanner,则应使用.Close关闭该类,尤其是Scanner对象 enter image description here