2013-03-11 483 views
14

当我试图从java代码中删除一个存在于tomcat服务器conf/Catalina/localhost中的文件时,file.delete()总是返回false 。但如果我通过file.exists()函数检查文件,它将返回true。我没有得到任何例外。请帮助我们为什么发生这种情况。这是什么解决方案?java file.delete()返回false但file.exists()返回true

+6

如果file.delete()返回false,则表示它未被删除。所以file.exists()将返回true。没有任何错误 – rajesh 2013-03-11 10:45:08

+3

检查文件权限。 – m0skit0 2013-03-11 10:45:11

+0

文件存在,但无法删除。就这样。 – Ingo 2013-03-11 10:45:33

回答

14

当我试图删除文件这是目前在Tomcat服务器 的conf /卡塔利娜/本地主机从Java代码然后file.delete()总是 返回false。但是,如果我通过file.exists()函数检查文件 它将返回true。

很有可能您没有权限删除服务器上的文件。检查您的权限。

f.delete()返回false表示它没有/不能被删除,并且f.exists()返回true,所以文件存在但不能被删除。

+1

我有服务器的完整权限。如果我试图删除相同的文件有时文件被删除,但最大时间不能删除和函数返回false。 – vishal 2013-03-11 10:48:26

+0

@visit你没有,当它不工作。 – Sajmon 2013-03-11 10:49:46

+0

有没有其他方法或库可以帮助解决这个问题。因为我有要求通过使用代码来删除文件。 – vishal 2013-03-11 10:53:31

0

这意味着该文件存在,但你的java程序不必须删除that.That是许可,为什么要删除函数返回假

Returns: true if and only if the file or directory is successfully deleted; false otherwise

+2

那么请告诉我如何为java进程分配权限来删除文件。因为我不得不通过代码删除文件。 – vishal 2013-03-11 10:49:53

9

有任何数量的原因有一个文件无法被删除;它可能不存在,它可能是非空目录,您可能没有关闭所有使用它的资源,并且您的程序可能没有权限这么做,仅举几例。

不幸的是,File.delete()方法提供的原因很少;这很大程度上取决于你去找出并解决问题。但是有好消息。你首先不想使用File

Java 7引入了新的java.nio.file包,这是一个更强大的文件访问API。它提供了摘要Path的概念,并将具体操作分为Files类,特别是它提供了Files.delete(),它被记录为引发清楚的例外,描述删除可能失败的原因。

使用PathFiles;你会很高兴你做到了。

2

在删除它之前,您必须关闭该流。

e.g -

fileInputStream.close(); 
file.delete(); 
2

如果目录非空,然后File.delete()方法将返回false而不发出一个错误。

删除它之前,您必须先清理目录。

相关问题