在我的应用程序的配置中,我有一条路径,例如“logs \ updater \ updater.log”
启动应用程序,我想创建文件updater.log,如果它们不存在则创建所有子文件夹。
因此,如果明天我的用户将配置中的路径更改为“logs \ mypathisbetter \ updater.log”,我的应用程序将继续工作,将日志写入新文件。
File.Create
,FileInfo.Create
,Streamwriter.Create
左右:他们这样做了?
或者,我之前是否需要检查文件夹是否存在?
我无法在网上找到这个问题的明确答案。
答案 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);
}