失败我们有一个MoveFile方法,通常可以工作,但在客户站点保持失败。File.Move前面有一个File.Delete
if (File.Exists(target))
{
File.Delete(target);
}
File.Move(source, target);
到File.Move
呼叫与
System.IO.IOException: Cannot create a file when that file already exists. at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.IO.__Error.WinIOError() at System.IO.File.Move(String sourceFileName, String destFileName)
反复失败我们周围的调用该方法的错误处理,但我们无法弄清楚,为什么File.Delete
不工作,不扔东西。
我们虽然关于文件许可,但然后File.Delete
将抛出UnauthorizedAccessException
。
是否有任何其他原因会导致File.Move
在“文件已存在”失败时导致该特定文件被删除?
好奇:如果将File.Move包装在类似的if(File.Exists(..))中会发生什么? – razlebe 2011-04-18 15:16:24
删除后移动失败的一个可能原因是文件句柄可能仍在系统中的某个进程中打开,例如反病毒扫描程序或搜索索引器。由于File.Delete注释部分明确指出“Windows NT 4.0平台注意:删除不会删除为正常I/O或存储器映射的文件打开的文件”,而只是将其标记为“删除”,并进一步调用give拒绝访问异常。 – kiran 2014-02-11 09:55:25