我正在生成报告并尝试通过电子邮件将其发送给用户。此过程适用于1个用户。但是当我尝试向多个用户发送报告时,我需要重新生成报告,为此我需要删除存储在服务器上的以前的报告。所以我使用以下代码。
if(newFileName.exists()){
System.out.println("file delete: "+newFileName.delete());
}
但它让我虚伪。因此,第二个用户收到与第一个用户相同的报告。我找了很多解决方案;但都失败了。请有人帮我这个吗?
答案 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
也许最好的解决方案是生成彼此不同名称的文件?