我想创建一个特定目录中的文件。 例如:C:\ x \ y \ z \ a.txt
对于此操作,我必须创建目录以创建文件。
Directory.Createdirectory("C:\x\y\z\");
File.Create("C:\x\y\z\a.txt");
但我真的很想知道我可以在单行代码中执行此操作。
任何帮助和想法都会受到高度赞赏。
答案 0 :(得分:2)
简单:添加功能
void MySingleLineOfCodeFunction(string path, string filename)
{
Directory.Createdirectory(path);
File.Create(filename);
}
然后使用一行代码:
MySingleLineOfCodeFunction(@"C:\x\y\z\", "a.txt");
我想说的是代码之间没有区别。 其中一些是由微软人员编写的,而其他人则由普通人编写。但是电脑没有什么区别。 :)
答案 1 :(得分:2)
不幸的是,没有一行代码可以做你想要的。
为什么呢?因为即使我们通过一些Microsoft内置函数这样做,内部也会调用两种方法。一个用于目录创建,另一个用于文件创建。
然而,你可以通过将它们变成一个方法来减少你的代码行,并像Petar Ivanov所说的那样在一行中调用它们
或
您可以创建静态扩展方法。这样您就可以在其他地方使用它而无需创建实例。 (减少创建实例的一行)。
答案 2 :(得分:2)
据我所知,没有File创建方法可以在.NET框架中同时创建目录。
如果代码中重复了“目录检查/创建,然后创建文件”模式,则必须在方法中实现它。
答案 3 :(得分:1)
要创建文件,不,该目录必须存在。即使使用Visual Basic的文件友好类,您仍然必须首先创建目录。有趣的是移动会创建文件夹。
来自CreateFile http://msdn.microsoft.com/en-us/library/windows/desktop/aa363858(v=vs.85).aspx
<强>目录强>
应用程序无法使用创建目录 CreateFile,因此只有OPEN_EXISTING值有效 此用例的dwCreationDisposition。要创建目录,请执行 应用程序必须调用CreateDirectory或CreateDirectoryEx
答案 4 :(得分:0)
我已经修改了@Petar_Ivanov的答案,根据文件路径计算父目录,认为它可能对其他可能需要类似功能的人有用。
public void CreateFile(string filePath)
{
if (!File.Exists(filePath))
{
var parent = Directory.GetParent(filePath);
Directory.CreateDirectory(parent.FullName);
File.Create(filePath);
}
}
这种方法的主要警告是: File.Create返回一个文件流,因此您需要记住将其关闭。
答案 5 :(得分:0)
主要在我的代码块中; 我在文件创建部件之前处理文件夹存在。
public void CheckCreatePath(fileName)
{
string filePath = Directory.GetParent(fileName).ToString();
if (!Directory.Exists(filePath))
Directory.CreateDirectory(filePath);
}
然后使用
CheckCreatePath("C:\\TEMP\\TESTPath\\myFile.txt");
在您的代码块中。