【问题标题】:Streamwriter should also create directories from a path if they don't exist [duplicate]如果路径不存在,Streamwriter 还应该从路径创建目录[重复]
【发布时间】:2023-04-09 20:42:03
【问题描述】:

使用StreamWriter 写入日志文件时,我将文件路径传递给构造函数

using StreamWriter streamWriter = new StreamWriter("C:\\Logs\\log.txt", true);
streamWriter.WriteLine("test");

如果该文件不存在,则写入者在写入之前创建它。但如果目录不存在,代码会抛出 System.IO.DirectoryNotFoundException。有没有办法告诉作者创建完整路径也意味着创建目录?

【问题讨论】:

标签: c# streamwriter


【解决方案1】:

您可以使用Directory.CreateDirectory(path) 在路径中创建所有不存在的目录。 如果您有文件路径,您可以使用Path.GetDirectoryName(pathToFile) 获取最后一个没有文件的目录的路径。

string filePath = "C:\\Logs\\log.txt";
string dirPath = Path.GetDirectoryName(filePath);
if(!Directory.Exists(dirPath))
    Directory.CreateDirectory(dirPath);

【讨论】:

    【解决方案2】:

    看起来没有办法告诉StreamWriter 在写入新文件时创建目录。

    初始化FileStream 时,StreamWriter 会中断on invalid handles,然后throw 将变为DirectoryNotFoundException。没有自动创建。

    您必须使用Directory.CreateDirectory(path) 自己创建目录。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-08
      • 2010-11-25
      • 2020-02-21
      • 2011-08-22
      • 2012-07-17
      • 1970-01-01
      • 2014-03-08
      • 1970-01-01
      相关资源
      最近更新 更多