从路径创建文件,创建子目录(如果不存在)

时间:2010-09-28 15:28:45

标签: .net file

在我的应用程序的配置中,我有一条路径,例如“logs \ updater \ updater.log”

启动应用程序,我想创建文件updater.log,如果它们不存在则创建所有子文件夹。

因此,如果明天我的用户将配置中的路径更改为“logs \ mypathisbetter \ updater.log”,我的应用程序将继续工作,将日志写入新文件。

File.CreateFileInfo.CreateStreamwriter.Create左右:他们这样做了?

或者,我之前是否需要检查文件夹是否存在?

我无法在网上找到这个问题的明确答案。

3 个答案:

答案 0 :(得分:13)

使用一点代码解决:

private static void EnsureDirectoryExists(string filePath) 
{ 
  FileInfo fi = new FileInfo(filePath);
  if (!fi.Directory.Exists) 
  { 
    System.IO.Directory.CreateDirectory(fi.DirectoryName); 
  } 
}

对不起这个真正的新手帖子...... 谢谢你们! : - )

答案 1 :(得分:9)

不,他们似乎没有 - 你会得到一个DirectoryNotFoundException,我相信这三个。

您需要首先执行Directory.CreateDirectory(path)之类的操作。

修改

对于一个以包含文件名的路径开头的完整解决方案,请尝试:

    Directory.CreateDirectory(Path.GetDirectoryName(fullPath));

    TextWriter writer = new StreamWriter(fullPath);
    writer.WriteLine("hello mum");
    writer.Close();

但请记住,你也需要一些错误处理,以便作者总是关闭(在'finally'块中)。

答案 2 :(得分:2)

如果只想创建一个不存在的文件夹/目录,另一个选择是简单地在C#中执行此操作:

// using System.IO;
if (!Directory.Exists(destination))
{
    Directory.CreateDirectory(destination);
}