首页 > 解决方案 > 创建目录或删除目录比代码慢

问题描述

如果你能帮助我,只是一个简单的问题,拜托。在 C# 中,我正在创建一个目录,如果它不存在的话。在下一个命令中,我正在检查目录是否存在,我将复制一些文件。

问题是,创建新目录或删除它需要时间并且比下一个代码执行时间慢。

软件报错“文件夹不存在”。我曾经Thread.Sleep(5000);在将内容复制到目录之前等待 5 秒钟。

它似乎正在工作,但我觉得这不是应该做的。有谁知道更好的编码?

string logDirectoryPath = Directory.GetCurrentDirectory() + "\\LogFiles";
if (!Directory.Exists(logDirectoryPath))
{
   Directory.CreateDirectory(Directory.GetCurrentDirectory() + "\\LogFiles");
   Thread.Sleep(5000);
}

if (Directory.Exists(Directory.GetCurrentDirectory() + "\\LogFiles"))
{
   var s = logDirectoryPath + "\\Log_" + DateTime.Now.ToString("dd_MM_yyyy") + ".txt";

   using (StreamWriter w = File.AppendText(s))
   {
      w.WriteLine("--");
      w.Write("\r\nLog Entry : ");
      w.WriteLine($"{DateTime.Now.ToLongTimeString()} {DateTime.Now.ToLongDateString()}");
   }
}

//编辑 只是想也许我应该使用循环?

While(!Directory.Exists(logDirectoryPath))
{
      Directory.CreateDirectory(Directory.GetCurrentDirectory() + "\\LogFiles");
}

标签: c#system.io.file

解决方案


使用 DirectoryInfo

DirectoryInfo di = new DirectoryInfo(#{PATHSTRING});

并使用 di.Exists 检查它是否存在 / di.Create() 创建文件夹

我想推荐使用您已经定义的 logDirectoryPath。

像这样

DirectoryInfo di = new DirectoryInfo(logDirectoryPath);

if ( !di.Exists ) {
    di.Create();
}

推荐阅读