我将文件从远程计算机复制到计算机中的临时文件夹。然后我检查下载文件的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:
该进程无法访问该文件,因为该文件正由另一个进程使用。
任何想法为什么?
答案 0 :(得分:1)
您的代码正在将文件从网络共享复制到临时文件位置。然后使用Hasher.HashFile
计算MD5哈希值,然后使用File.Move
移动临时文件。
但是你发现文件因为已经打开而无法移动,所以最可能的解释是Hasher.HashFile
在计算哈希值后没有关闭文件。