C# 将文件从一个文件夹移动到另一个文件夹时发生IOException
我正在将文件从远程计算机复制到计算机中的临时文件夹。然后我检查下载文件的md5,并将下载文件从临时文件夹移动到当前应用程序目录。以下是我的方法:C# 将文件从一个文件夹移动到另一个文件夹时发生IOException,c#,wpf,C#,Wpf,我正在将文件从远程计算机复制到计算机中的临时文件夹。然后我检查下载文件的md5,并将下载文件从临时文件夹移动到当前应用程序目录。以下是我的方法: if (Hasher.HashFile(tempFile, HashType.MD5) != _md5) { DeleteFile(tempFile); return false; } else { var updatedFile = currentAppLocation+@"\" + appFileName + ".xml";
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;
}
我总是得到一个例外:
进程无法访问该文件,因为其他进程正在使用该文件
知道为什么吗?您的代码正在将文件从网络共享复制到临时文件位置。然后使用Hasher.HashFile计算MD5哈希,然后使用file.Move移动临时文件
但是,正如您所发现的,由于文件已打开,因此无法移动该文件,因此最可能的解释是Hasher.HashFile在计算哈希后不会关闭该文件。从何处获得IOException。简单地调试你的应用程序很可能会指出确切的问题…@MarkJansen我在这里的代码中写到了错误@w、 b我只做处理和移动操作,而不更改contentHasher。HashFile在计算哈希值时很可能不会关闭文件。@MartinLiversage谢谢你!像回答一样贴出来!这么愚蠢的错误。。。