如果不存在,Streamwriter还应该从路径创建目录

问题描述

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

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

如果该文件不存在,那么编写者会在写入之前创建它。但是,如果目录不存在,则代码将引发 System.IO.DirectoryNotFoundException 。有没有办法告诉作者创建完整路径的意思,也就是创建目录?

解决方法

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

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

似乎无法在写入新文件时告诉StreamWriter创建目录。

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

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