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

Fer*_*oce 10 .net file

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

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

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

File.Create,FileInfo.Create,Streamwriter.Create或者这样:他们这样做吗?

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

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

Fer*_*oce 14

使用一点代码解决:

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

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


Gra*_*ton 10

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

你需要先做一些事情Directory.CreateDirectory(path).

编辑:

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

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

    TextWriter writer = new StreamWriter(fullPath);
    writer.WriteLine("hello mum");
    writer.Close();
Run Code Online (Sandbox Code Playgroud)

但请记住,您也需要一些错误处理,以便编写器始终关闭(在'finally'块中).


小智 6

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

// using System.IO;
if (!Directory.Exists(destination))
{
    Directory.CreateDirectory(destination);
}
Run Code Online (Sandbox Code Playgroud)