gpt4 book ai didi

java - java中线程结束后如何删除文件?

转载 作者:行者123 更新时间:2023-12-01 11:39:48 26 4
gpt4 key购买 nike

我正在尝试发送一封带有附件的邮件。我正在使用 javamail api 来执行此操作。由于多个用户可以同时发送邮件,因此我创建了一个线程以确保安全。我可以使用 file.delete() 函数删除该文件,该函数在邮件中完成附件之前发生。但附件/邮件发送后我无法删除该文件。请帮助我解决这个问题。

这是我用来附加和发送邮件的代码:

public void sendMailWithAttachment(String from, final String to, final String subject, final String msg, final String filePath) {
Thread ty = new Thread(){
public void run(){
MimeMessage message = mailSend.createMimeMessage();

try{
MimeMessageHelper helper = new MimeMessageHelper(message, true);

//helper.setFrom(from);
helper.setTo(to);
helper.setSubject(subject);
helper.setText(msg);

FileSystemResource file = new FileSystemResource(filePath);
helper.addAttachment(file.getFilename(), file);

//I want to write code to delete the file here

}catch (MessagingException e) {
throw new MailParseException(e);
}
mailSend.send(message);
}
};
ty.start();
}

最佳答案

无论如何,您正在初始化您的 Thread 实现。您可以重写 Thread 实现的 Finalize() 方法,该方法在 Thread 对象即将被垃圾收集时调用。

代码如下所示:

Thread ty = new Thread(){
public void run(){
// do mail sending stuff here.
}

@Override
protected void finalize() throws Throwable {
// delete file here
}
};
ty.start();

关于java - java中线程结束后如何删除文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29625958/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com