0

我正在使用 Microsoft.Office.Interop.MailItem 从电子邮件中删除附件,将它们保存到磁盘,打印出来,然后从磁盘中删除它们。我在删除 JPG 附件时遇到问题,文件似乎有锁,

这是我保存每个附件的代码,

foreach (Attachment attachment in outLookMessage.Attachments)
{
    var fileNameOnDisk = FileNameOnDisk(printFileFolder, attachment.FileName);

    attachment.SaveAsFile(fileNameOnDisk);
}

我不确定为什么 JPG 文件会被锁定。有什么办法可以释放这个日志以便我可以删除文件?

4

2 回答 2

3

我会attachment.Dispose()在删除它们之前尝试使用。

于 2013-03-26T12:35:46.620 回答
0

最可能的原因是该文件已经存在(并且被保留)或者您没有执行该操作的权限。第一个几乎肯定是这样的

如果文件存在,为什么要覆盖它?这可能不是您想要做的。最好在编写之前检查文件是否存在以及它是否被锁定,并在需要时更改名称。 这个问题的第二个答案有一些代码用于找出文件是否被锁定(更具体地说,不仅仅是 IOException)。

关于克里斯对问题的评论(好主意,克里斯),如果文件存在,被锁定并且长度为 0,那么在 FileNameOnDisk 中很可能是你自己的错。如果您要返回路径(最好),请关闭您打开的内容,或者使用共享读/写打开它并返回文件流并在完成后关闭它(不是最好的)。

于 2013-03-26T12:45:27.300 回答