如何在一个方法调用中创建文件及其父目录

本文关键字:文件 创建 调用 方法 一个 | 更新日期: 2023-09-27 18:36:19

我想创建一个位于特定目录中的文件。例如: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人写的,有些是我们普通人写的。但是计算机并没有区别。:)

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

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

不幸的是,

没有一行代码可以做你想做的事情。

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

但是,您可以通过将它们变成一种方法来减少代码行数,并在一行中调用它,正如Petar Ivanov所说

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

我已经修改了@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

目录

应用程序无法使用 创建文件,因此只有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");

在代码块中。