filename.delete()在JAVA中给出false

时间:2016-05-12 07:40:02

标签: java io

我正在生成报告并尝试通过电子邮件将其发送给用户。此过程适用于1个用户。但是当我尝试向多个用户发送报告时,我需要重新生成报告,为此我需要删除存储在服务器上的以前的报告。所以我使用以下代码。

if(newFileName.exists()){
   System.out.println("file delete:  "+newFileName.delete());
}

但它让我虚伪。因此,第二个用户收到与第一个用户相同的报告。我找了很多解决方案;但都失败了。请有人帮我这个吗?

1 个答案:

答案 0 :(得分:1)

我很确定你无法删除你的文件,因为你的进程中仍在使用该文件...检查你是否还没有使用此文件打开任何Stream。

或者您可能没有足够的权限来删除服务器上的文件。检查一下。

尝试使用Path对象并使用它来获取有关您遇到问题的原因的更多信息:(Java 7及更高版本)

try {
    Files.delete(newFileName.toPath());
} catch (NoSuchFileException x) {
    System.err.format("%s: no such" + " file or directory%n", path);
} catch (DirectoryNotEmptyException x) {
    System.err.format("%s not empty%n", path);
} catch (IOException x) {
    // File permission problems are caught here.
    System.err.println(x);
}

此处的代码:https://docs.oracle.com/javase/tutorial/essential/io/delete.html

也许最好的解决方案是生成彼此不同名称的文件?