我想创建一个位于特定目录中的文件。例如: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");
我想说的是代码之间没有区别。有些是微软人写的,有些是我们普通人写的。但是计算机并没有什么不同。:)
不幸的是,没有单行代码可以做你想做的事。
为什么?因为即使我们通过一些 Microsoft 内置函数这样做,在内部它也会调用两个方法。一个用于目录创建,另一个用于文件创建。
但是,您可以通过将它们变成一个方法来减少代码行,并像 Petar Ivanov 所说的那样在一行中调用它
或者
您可以创建静态扩展方法。这样您就可以在其他地方使用它而无需创建实例。(减少了创建实例的一行)。
据我所知,.NET框架中没有同时创建目录的文件创建方法。
如果模式“目录检查/创建,然后文件创建”在您的代码中重复很多次,您必须在方法中实现它。
我已经修改了@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");
在您的代码块中。