如何释放JPG文件的锁定

时间:2013-03-26 12:29:22

标签: c# jpeg

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

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

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

    attachment.SaveAsFile(fileNameOnDisk);
}

我不确定为什么JPG文件存在锁定。有什么方法可以释放这个日志,以便我可以删除该文件吗?

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

最可能的原因是该文件已存在(并且正在被保留)或您无权执行该操作。第一个几乎可以肯定是

如果文件存在,为什么你在写它?这可能不是你想要做的。 最好检查文件是否存在以及在写入之前是否已锁定,并在需要时更改名称。 The second answer in this question有一些代码可以找出文件是否被锁定(更具体地说,只是IOException)。

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