【问题标题】:Deleting a directory, recreating it, and adding files to it删除目录、重新创建目录并向其中添加文件
【发布时间】:2015-10-08 20:42:25
【问题描述】:

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

root\scripts\'许多文件'

在我打开 Windows 资源管理器窗口并导航到“脚本”目录之前,所有这些代码似乎都运行良好且没有错误。当我再次运行它时,它会在删除时按预期将我踢出文件夹,但是尝试将文件添加到目录时会抛出异常,并且当我查看“脚本”目录时甚至没有退出。

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 资源管理器似乎有些奇怪,但我的问题不同。它不会在删除时引发异常,但是当我尝试将文件添加到目录时,b/c 当我在目录中时,createDirectory 似乎没有触发。

我的解决方案如下。

【问题讨论】:

  • 致任何版主:我想在这里发布这些内容以供任何寻找它的人使用,我不确定是否应该在最初的帖子中保留我的答案,或者我是否应该回答我自己的问题?跨度>

标签: c# windows file-io explorer


【解决方案1】:

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

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);

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

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

【讨论】:

  • 自己的问题可以自己回答。
  • @dustmouse 我只是不确定是否考虑到我在发帖前回答了这个问题,但我确实想发一篇关于它的帖子,因为这对我和同事来说似乎很奇怪。
猜你喜欢
  • 1970-01-01
  • 2012-10-01
  • 2011-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多