问题描述
使用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)
自己创建目录。