9

我想创建一个位于特定目录中的文件。例如:C:\x\y\z\aTextFile.txt

对于这个操作,我必须创建目录来创建文件。

Directory.CreateDirectory(@"C:\x\y\z\");
File.Create(@"C:\x\y\z\aTextFile.txt");

但我真的很想知道我可以在一行代码中完成这个操作。

任何帮助和想法将不胜感激。

4

6 回答 6

3

简单:添加一个函数

void MySingleLineOfCodeFunction(string path, string filename)
{
    Directory.Createdirectory(path);
    File.Create(filename).Dispose();
}

然后使用一行代码:

MySingleLineOfCodeFunction(@"C:\x\y\z\", "a.txt");

我想说的是代码之间没有区别。有些是微软人写的,有些是我们普通人写的。但是计算机并没有什么不同。:)

于 2012-06-06T05:50:18.880 回答
2

不幸的是,没有单行代码可以做你想做的事。

为什么?因为即使我们通过一些 Microsoft 内置函数这样做,在内部它也会调用两个方法。一个用于目录创建,另一个用于文件创建。

但是,您可以通过将它们变成一个方法来减少代码行,并像 Petar Ivanov 所说的那样在一行中调用它

或者

您可以创建静态扩展方法。这样您就可以在其他地方使用它而无需创建实例。(减少了创建实例的一行)。

于 2012-06-06T05:54:43.837 回答
2

据我所知,.NET框架中没有同时创建目录的文件创建方法。

如果模式“目录检查/创建,然后文​​件创建”在您的代码中重复很多次,您必须在方法中实现它。

于 2012-06-06T06:01:41.107 回答
2

我已经修改了@Petar_Ivanov 的答案,以根据文件路径计算出父目录,认为它可能对可能需要类似功能的其他人有用。

    public void CreateFile(string filePath)
    {
        if (!File.Exists(filePath))
        {
            var parent = Directory.GetParent(filePath);
            Directory.CreateDirectory(parent.FullName);
            File.Create(filePath).Dispose();
        }
    }
于 2013-06-21T13:32:21.257 回答
1

要创建文件,不,目录必须存在。即使使用 Visual Basic 的文件友好类,您仍然必须首先创建目录。有趣的是,移动会创建文件夹。

来自 CreateFile http://msdn.microsoft.com/en-us/library/windows/desktop/aa363858(v=vs.85).aspx

目录

应用程序无法使用 CreateFile 创建目录,因此对于此用例,只有 OPEN_EXISTING 值对 dwCreationDisposition 有效。要创建目录,应用程序必须调用 CreateDirectory 或 CreateDirectoryEx

于 2012-06-06T06:24:02.787 回答
0

主要在我的代码块中;我在文件创建部分之前处理文件夹的存在。

public void CheckCreatePath(fileName)
{
    string filePath = Directory.GetParent(fileName).ToString();
    if (!Directory.Exists(filePath))
        Directory.CreateDirectory(filePath);
}

并使用

CheckCreatePath("C:\\TEMP\\TESTPath\\myFile.txt");

在您的代码块中。

于 2015-10-01T12:35:54.380 回答