删除目录,重新创建目录,并向其中添加文件
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?
我的问题是这样的。我正在创建一个目录并用文件归档它用于 运行 特定进程,在随后的 运行 中它会删除目录,重新创建它并开始用文件填充它。
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?