c# - 由于错误而无法删除临时文件

标签 c# .net

我在 mscorlib.dll 中遇到 System.IO.IOException 类型的未处理异常,因为我尝试删除的文件正在被另一个进程使用。

我希望它跳过已使用的文件。

private void button1_Click(object sender, EventArgs e)
{
    System.IO.DirectoryInfo directory = 
        new System.IO.DirectoryInfo(@"C:\Users\fatih\AppData\Local\Temp");

    foreach (System.IO.FileInfo file in directory.GetFiles()) file.Delete();
    foreach (System.IO.DirectoryInfo subDirectory in directory.GetDirectories()) 
        subDirectory.Delete(true);
}

最佳答案

如果删除所有内容并不重要,请使用:

private void button1_Click(object sender, EventArgs e)
{
    string directory = @"C:\Users\fatih\AppData\Local\Temp";
    deleteDirectory(directory);
}
private void deleteDirectory(string directory){
    foreach (string file in Directory.GetFiles(directory)) 
    {
        try{
             File.Delete(file);
        }
        catch(Exception e0){
        Console.WriteLine(e0.Message+"\n"+e0.Source);//not necessary but nice to learn from
        }
    }
    foreach (string direc in Directory.GetDirectories(directory)) {
          deleteDirectory(direc);
          Directory.Delete(direc,true);
    }
}

这将简单地跳过任何有问题的文件或目录并删除其他所有内容。

关于c# - 由于错误而无法删除临时文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39398662/

相关文章:

c# - 通过C#恢复MySQL文件

c# - 如何转义c#中的关键字?

调用的目标已抛出 C# 异常

c# - Resharper 无法识别 C# 项目中引用的托管 C++/clr 项目

.net - 是否有使用 Entity Framework 的主要应用程序?

.net - 多线程变量访问

c# - 使用 DirectX 防止屏幕捕获

c# - 分子 MC 模拟不平衡

c# - Bloomberg API - 使用 .Net API 获取底层证券上的 FUT_CHAIN

.net - 如何在代码中将鼠标光标设置为混合沙漏和箭头? (。网)