为什么使用folder.close()而不是直接使用store.close()?

时间:2013-10-30 02:31:12

标签: javamail

如果您直接使用store.close()而不首先使用方法folder.close(expungeYesOrNo),那么您将无法删除标记为删除的邮件,并且不会激活该文件夹的ConnectionListeners。因为不会发送CLOSED COnnectionEvent。它是否正确?有什么补充吗?

提前谢谢

编辑:仔细检查IMAPStore.cleanup()后,我看到每个打开的文件夹都调用了Folder.close(false)。那么这段代码emailFolder.close(false) /* this one*/; emailStore.close();会多余吗? (取自http://www.javatpoint.com/example-of-receiving-email-using-java-mail-api

2 个答案:

答案 0 :(得分:0)

如果您关闭整个商店,之后您就无法对商店做任何其他事情。当然这很明显?如果您只是关闭文件夹,则无法对该文件夹执行任何操作,但您仍可以在商店中操作。

答案 1 :(得分:0)

关闭商店也应关闭所有文件夹,但它比通过调用Folder.close获得的控制关闭更加“突然”关闭。

如果你知道你完成文件夹的时间并且可以关闭它,那将比忘记文件夹更加可靠和可预测,并假设store.close会处理它。是的,关闭商店将尝试关闭所有文件夹,但是如果您查看了该代码并了解它是如何在许多版本中发展的,那么您将会知道它很复杂并且容易出错。我现在想相信它是正确和可靠的,但我以前错了......