我有以下代码(实际上分为不同的方法,但这就是它的意思):
string ThePath = FBD.SelectedPath; // FBD is a FolderBrowserDialog.
string TheSubDirPath = Path.Combine(ThePath, TheSubDirName);
if (Directory.Exists(TheSubDirPath)) { Directory.Delete(TheSubDirPath, true); } // Want a clean, empty directory.
Directory.CreateDirectory(TheSubDirPath);
string TheSrcFileName = Path.Combine(ThePath, MyOldFileName);
string TheDestFileName = Path.Combine(TheSubDirPath, MyNewFileName);
File.Copy(TheSrcFileName, TheDestFileName, false); // Overwriting is impossible, so not needed.
最后一行导致带有消息
的DirectoryNotFoundException无法找到路径'C:\ Users ... \ Test01 \ TheSubDirName \ MyNewFileName'的一部分。“
源路径和目标路径都是我想要的路径。 我在目录删除后和目录创建后尝试插入延迟,无效。我有一个堆栈跟踪,显示问题的核心
在 System.IO.Error.WinIOError(Int32 errorCode,String maybeFullPath)
在 System.IO.File.InternalCopy(String sourceFileName,String destFileName,Boolean overwrite,Boolean checkHost)
在 System.IO.File.Copy(String sourceFileName,String destFileName,Boolean overwrite)
有什么想法吗?
答案 0 :(得分:1)
可能存在某种情况
调用方法Directory.Delete(TheSubDirPath, true)
的结果可能会将文件夹保留为'以便删除'。因此,您可能在创建新文件夹后删除了文件夹。尝试更改声明
if (Directory.Exists(TheSubDirPath))
Directory.Delete(TheSubDirPath, true);
与
while(Directory.Exists(TheSubDirPath))
{
Directory.Delete(TheSubDirPath, true);
Sleep(); //Somehow like Thread.Sleep()
}
答案 1 :(得分:0)
将条件替换为:
if (Directory.Exists(TheSubDirPath))
Directory.Delete(TheSubDirPath, true);