C#:在您拥有DirectoryInfo的目录中创建新的FileInfo
我只是想知道你什么时候有:
var dir = new DirectoryInfo(@"C:\Temp");
是否有更简单/更清晰的方法将新文件添加到该目录?
var file = new FileInfo(Path.Combine(dir.FullName, "file.ext"));
我想我可能只是做一个扩展方法或其他东西,但好奇如果已经存在的东西在这里看不到……我的意思是DirectoryInfo
确实有GetFiles()
方法。
你想做什么? 标题写着“创建一个新文件”。 FileInfo对象不是文件; 它是一个包含文件信息的对象(可能存在也可能不存在)。 如果您确实想要创建该文件,可以采用多种方法。 最简单的方法之一是:
File.WriteAllText(Path.Combine(dir.FullName, "file.ext"), "some text");
如果要基于FileInfo
对象创建文件,可以使用以下方法:
var dir = new DirectoryInfo(@"C:\Temp"); var file = new FileInfo(Path.Combine(dir.FullName, "file.ext")); if (!file.Exists) // you may not want to overwrite existing files { using (Stream stream = file.OpenWrite()) using (StreamWriter writer = new StreamWriter(stream)) { writer.Write("some text"); } }
作为旁注:它是dir.FullName
,而不是dir.FullPath
。
你为什么不用:
File.Create(@"C:\Temp\file.ext");
要么
var dir = new DirectoryInfo(@"C:\Temp"); File.Create(dir.FullName + "\\file.ext");
虽然存在Directorynfo.GetFiles()
方法,但它们只返回实际存在于磁盘上的文件。 Path.Combine
是关于假设的路径。
试试这些扩展方法:
public static FileInfo CombineWithFileName(this DirectoryInfo directoryInfo, string fileName) { return new FileInfo(Path.Combine(directoryInfo.Name, fileName)); } public static DirectoryInfo CombineWithDirectoryName(this DirectoryInfo directoryInfo, string directoryName) { return new DirectoryInfo(Path.Combine(directoryInfo.Name, directoryName)); }