我想删除java中的文件。生成此结果。我该如何删除该文件。这是什么原因。
File l_file = new File(path);
System.out.println(l_file.exists()); //returns true
System.out.println(l_file.delete()); //returns false
谢谢。
答案 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)
有两种解决方法。
.Close
关闭该类,尤其是Scanner对象