所以,我有一些看起来如下的逻辑:
private static void CopyToDestDirectory(string destDirectory, string srcDirectory)
{
if (!Directory.Exists(destDirectory))
{
Directory.CreateDirectory(destDirectory);
}
foreach (var file in Directory.GetFiles(srcDirectory))
{
var filename = Path.GetFileName(file);
var destPath = Path.Combine(destDirectory, filename);
File.Copy(file, destPath, true);
}
...
}
通常这有效,但每隔一段时间就没有。对于它不起作用的时间,我有一个类似于以下内容的日志文件:
2016-12-22 15:49:21,670 [11] ERROR:
System.IO.DirectoryNotFoundException: Could not find a part of the path 'C:\destPath\FileName.ext'.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.File.InternalCopy(String sourceFileName, String destFileName, Boolean overwrite, Boolean checkHost)
at System.IO.File.Copy(String sourceFileName, String destFileName, Boolean overwrite)
at Namespace.Class.CopyToDestDirectory(String destDirectory, String srcDirectory)
at Namespace.Class.CallingMethod()
我不知道为什么我会收到目标路径的异常。这对我没有意义,因为我确保在复制之前重新创建目标目录。
这就是调用方法的样子。值得注意的是,它在调用CopyToDestDirectory
之前删除了目录。我不希望这是一个问题因为,我只是重新创建它的目录,因为这和CopyToDestDirectory
是同步的,但老实说,我不熟悉System.IO功能背后的所有低级细节,所以我认为值得一提。
public void CallingMethod()
{
try
{
...
if (Directory.Exists(destDirectory))
{
Directory.Delete(destDirectory, true);
}
string srcDirectory = GetSrcDirectory();
CopyToDestDirectory(destDirectory, srcDirectory);
...
}
catch (Exception ex)
{
_log.Error("", ex);
throw;
}
}
什么可能导致这样的错误?
答案 0 :(得分:0)
在创建SymLinks / Junctions以更新目录内容之前,我有一个类似PowerShell的案例。
作为解决方法:我最终编写了一个循环,删除/创建目录,当它存在/不存在时。我想写一个日志,用于循环情况,但是因为它在第一次工作时发生了变化。奇怪的是,也许错误是在代码周围,但我没有重现它。也许足以第二次调用Directory.Exists()。