我正在使用Microsoft.Office.Interop.MailItem从电子邮件中删除附件,将它们保存到磁盘,打印出来然后从磁盘中删除它们。我在删除JPG附件时遇到问题,该文件似乎有锁,
这是我保存每个附件的代码,
foreach (Attachment attachment in outLookMessage.Attachments)
{
var fileNameOnDisk = FileNameOnDisk(printFileFolder, attachment.FileName);
attachment.SaveAsFile(fileNameOnDisk);
}
我不确定为什么JPG文件存在锁定。有什么方法可以释放这个日志,以便我可以删除该文件吗?
答案 0 :(得分:3)
我会在删除之前尝试使用attachment.Dispose()
。
答案 1 :(得分:0)
最可能的原因是该文件已存在(并且正在被保留)或您无权执行该操作。第一个几乎可以肯定是
如果文件存在,为什么你在写它?这可能不是你想要做的。 最好检查文件是否存在以及在写入之前是否已锁定,并在需要时更改名称。 The second answer in this question有一些代码可以找出文件是否被锁定(更具体地说,只是IOException)。
关于Chris对问题的评论(好主意,Chris),如果文件存在,被锁定且长度为0,那么在FileNameOnDisk中可能是你自己的错。如果您返回路径(最好)或者使用共享读/写打开它并关闭文件流并在完成后关闭它(不是最好的),请关闭打开的内容。