我只是想知道,当你有一个例子:
var dir = new DirectoryInfo(@"C:\Temp");
是否有一个新的文件添加到该目录比这更简单的/更清晰的方式吗?
var file = new FileInfo(Path.Combine(dir.FullName, "file.ext"));
我想我可能只需要做出一个扩展方法或东西,但好奇,如果东西已经存在无法看到这里...我的意思是DirectoryInfo
确实有GetFiles()
的实例方法。
我只是想知道,当你有一个例子:
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));
}