删除目录,重新创建目录,并向其中添加文件

Deleting a directory, recreating it, and adding files to it

我的问题是这样的。我正在创建一个目录并用文件归档它用于 运行 特定进程,在随后的 运行 中它会删除目录,重新创建它并开始用文件填充它。

root\scripts\'Many files'

在我打开我的 Windows Explorer window 并导航到 'scripts' 目录之前,所有这些代码似乎 运行 没有错误。当我再次 运行 它会在删除时按预期将我踢出文件夹,但它会抛出异常试图将文件添加到目录,当我查看 'scripts' 目录时没有'甚至退出。

DirectoryNotFoundException was caught: Could not find a part of the path

我的代码是这样的。

if (Directory.Exists(scriptsDirectory))
    Directory.Delete(scriptsDirectory, true);
Directory.Create(scriptsDirectory));
File.WriteAllText(scriptsDirectory + fileName, output);

我上网查了一下发现:Windows Explorer and Directory.Delete()

Windows Explorer 似乎有些奇怪,但我的问题不同。它不会在删除时抛出异常,但是当我尝试将文件添加到目录时,b/c 当我在目录中时,createDirectory 似乎没有触发。

我的解决方案如下。

我的解决方案不是删除目录,而是删除目录中的所有文件,这对我有用。

if (Directory.Exists(strScriptsDirectory))
{                
    DirectoryInfo directoryInfo = new DirectoryInfo(strScriptsDirectory);

    // Delete the files
    foreach (FileInfo fileInfo in directoryInfo.GetFiles())
        fileInfo.Delete();
    // Delete the directories here if you need to.
}
else
    Directory.CreateDirectory(strScriptsDirectory);

此修复可能不适用于所有解决方案,并且 link 中提供的解决方案似乎不太好。 我们厌倦的另一个解决方案是写一个 while (true) 循环,它有一个 try catch 来尝试创建目录并向其中添加一个文件(如果添加文件导致异常,它将被捕获并重试)并且如果它成功它将删除测试文件并中断。

有没有人有任何更干净的解决方案,可以让您删除目录并重新创建,而不必担心用户是否在资源管理器中 window?