我想创建一个位于特定目录中的文件。 例如:C:\x\y\z\aTextFile.txt
为了进行此操作,我必须先创建目录以创建文件。
Directory.CreateDirectory(@"C:\x\y\z\");
File.Create(@"C:\x\y\z\aTextFile.txt");
不过我真的很想知道是否可以用一行代码完成这个操作。
任何帮助和想法将不胜感激。
我想创建一个位于特定目录中的文件。 例如:C:\x\y\z\aTextFile.txt
为了进行此操作,我必须先创建目录以创建文件。
Directory.CreateDirectory(@"C:\x\y\z\");
File.Create(@"C:\x\y\z\aTextFile.txt");
不过我真的很想知道是否可以用一行代码完成这个操作。
任何帮助和想法将不胜感激。
void MySingleLineOfCodeFunction(string path, string filename)
{
Directory.Createdirectory(path);
File.Create(filename).Dispose();
}
然后只需使用一行代码:
MySingleLineOfCodeFunction(@"C:\x\y\z\", "a.txt");
我想表达的是,代码之间没有区别。有些是由微软的工程师编写的,而另一些则是由我们这些普通人编写的。但是电脑并不会区别它们。:)
我修改了来自@Petar_Ivanov的答案,以便根据文件路径计算出父目录,认为这可能对其他想要类似功能的人有用。
public void CreateFile(string filePath)
{
if (!File.Exists(filePath))
{
var parent = Directory.GetParent(filePath);
Directory.CreateDirectory(parent.FullName);
File.Create(filePath).Dispose();
}
}
创建文件时,不,目录必须存在。即使使用Visual Basic的文件友好类,您仍然需要先创建目录。有趣的是,移动将创建文件夹。
来自CreateFile http://msdn.microsoft.com/en-us/library/windows/desktop/aa363858(v=vs.85).aspx
目录
应用程序无法使用CreateFile创建目录,因此对于此用例,仅OPEN_EXISTING值有效于dwCreationDisposition。要创建目录,应用程序必须调用CreateDirectory或CreateDirectoryEx。
在我的代码块中,我通常会在创建文件之前处理文件夹的存在。
public void CheckCreatePath(fileName)
{
string filePath = Directory.GetParent(fileName).ToString();
if (!Directory.Exists(filePath))
Directory.CreateDirectory(filePath);
}
只需要使用
CheckCreatePath("C:\\TEMP\\TESTPath\\myFile.txt");
在你的代码块中。
\TEMP
不存在,这个代码还能正常工作吗?问题中提到了“父目录”。 - Old Geezer