将文件从一个文件夹移动到其他文件夹时发生IOException

时间:2015-09-24 08:58:53

标签: c# wpf

我将文件从远程计算机复制到计算机中的临时文件夹。然后我检查下载文件的md5,并将下载的文件从临时文件夹移动到当前的应用程序目录。这是我的方法:

if (Hasher.HashFile(tempFile, HashType.MD5) != _md5)
{
    DeleteFile(tempFile);
    return false;
}
else
{
    var updatedFile = currentAppLocation+@"\" + appFileName + ".xml";
    //copy to current directory
    if (File.Exists(updatedFile))
        DeleteFile(updatedFile);

    File.Move(tempFile, updatedFile); // here error!

    //delete xml from server
    if (DeleteFile(file))
    {
        //delete txt with checksum from server
        return DeleteFile(txtFile);
    }                        
    return false;
}

我总是得到IOException:

  

该进程无法访问该文件,因为该文件正由另一个进程使用。

任何想法为什么?

1 个答案:

答案 0 :(得分:1)

您的代码正在将文件从网络共享复制到临时文件位置。然后使用Hasher.HashFile计算MD5哈希值,然后使用File.Move移动临时文件。

但是你发现文件因为已经打开而无法移动,所以最可能的解释是Hasher.HashFile在计算哈希值后没有关闭文件。