即使调用file.delete()方法,图像也不会被删除

2 java email file-io attachment

我需要发送一封电子邮件和一个嵌入式图像.电子邮件发送后,应立即删除应用程序服务器中的映像.我面临的问题是,在发送电子邮件之后,控件转到包含的方法,

File file = new File("../bar.jpeg")
if(file.exists()){
  file.delete();
  System.out.println("Barcode Image Deleted");
}
Run Code Online (Sandbox Code Playgroud)

它正在打印"条形码图像已删除".但是,图像不会被删除,并且仍然存在于同一位置.我正在使用multipart将图像附加到电子邮件中.

为什么不删除?

Ste*_*nne 8

你在用javax.mail吗?
如果是这样,您需要等到邮件发送完毕,您可以通过注册TransportListener找到它.

这也意味着您将无法使用静态Transport.send()方法,但必须构建和清理自己的会话和传输.

我正在尝试记住前一段时间的细节......我认为DataHandler或DataSource在读完输入流后不会关闭输入流,所以你需要保留对它的引用并自己关闭它可以删除基础文件.


coo*_*ird 6

File.delete方法返回一个boolean指示删除是否成功的方法.

由于没有删除文件的权限,可能是文件删除未成功执行.