如果文件夹不存在,如何创建文件和任何文件夹?

Pur*_*ome 124 .net c# file-access

想象一下我想创建(或覆盖)以下文件: - C:\Temp\Bar\Foo\Test.txt

使用File.Create(..)方法,这可以做到这一点.

但是,如果我没有以下任何一个文件夹(从该示例路径,上面)

  • 温度
  • 酒吧

然后我得到一个DirectoryNotFoundException抛出.

那么.. 给定一个路径,我们如何递归创建创建文件所需的所有文件夹..对于该路径? 如果存在Temp或Bar文件夹,但Foo不存在......那么也会创建.

为简单起见,我们假设没有安全问题 - 所有权限都很好,等等.

hul*_*ist 123

总结其他答案中评论的内容:

//path = @"C:\Temp\Bar\Foo\Test.txt";
Directory.CreateDirectory(Path.GetDirectoryName(path));
Run Code Online (Sandbox Code Playgroud)

Directory.CreateDirectory 将以递归方式创建目录,如果该目录已存在,则将返回而不会出现错误.

如果碰巧是个文件FooC:\Temp\Bar\Foo一个异常将被抛出.


Chr*_*ins 110

DirectoryInfo di = Directory.CreateDirectory(path);
Console.WriteLine("The directory was created successfully at {0}.",
    Directory.GetCreationTime(path));
Run Code Online (Sandbox Code Playgroud)

请参阅此MSDN页面.

希望有所帮助!

  • 您可以盲目地调用`Directory.CreateDirectory`而不首先检查`Directory.Exists` - 如果目录已经存在,它将不会抛出. (79认同)
  • 并且不要忘记[`Path.GetDirectoryName(string path)`](http://msdn.microsoft.com/en-us/library/system.io.path.getdirectoryname.aspx)从你的目录中获取目录完整路径 (22认同)
  • *注意:变量`path`不应包含文件名.所以使用OP的例子`path`应该是`C:\ Temp\Bar\Foo`.在调用`Directory.CreateDirectory(path);`之后,你仍然需要调用`File.Create("C:\ Temp\Bar\Foo\Test.txt");`来创建文件. (8认同)

Grz*_*nio 16

在创建文件之前使用Directory.CreateDirectory.它会递归地为您创建文件夹.


Ars*_*eny 5

。给定一个路径,我们如何递归地创建为该路径创建文件..所需的所有文件夹

创建路径指定的所有目录和子目录。

Directory.CreateDirectory(path);
Run Code Online (Sandbox Code Playgroud)

然后你可以创建一个文件。

  • 没有文件名的路径:) (2认同)