检查目录中是否存在文件夹并使用C#创建它们

gym*_*ode 93 c# asp.net visual-studio

如何检查目录是否C:/包含名为的文件夹MP_Upload,如果该文件夹不存在,则自动创建该文件夹?

我正在使用Visual Studio 2005 C#.

cyc*_*HuH 192

这应该有所帮助:

using System.IO;
...

string path = @"C:\MP_Upload";
if(!Directory.Exists(path))
{
    Directory.CreateDirectory(path);
}
Run Code Online (Sandbox Code Playgroud)

  • 使用System.IO; 一开始也需要 (4认同)

Hei*_*nzi 164

using System.IO;
...

Directory.CreateDirectory(@"C:\MP_Upload");
Run Code Online (Sandbox Code Playgroud)

Directory.CreateDirectory完全按照您的要求执行:如果目录尚不存在,则创建目录.没有必要先进行明确的检查.

创建路径中指定的任何和所有目录,除非它们已存在或除非路径的某些部分无效.path参数指定目录路径,而不是文件路径.如果该目录已存在,则此方法不执行任何操作.

(这也意味着如果需要,将创建路径上的所有目录:CreateDirectory(@"C:\a\b\c\d")即使C:\a尚不存在,也足够了.)


但是,让我对您选择的目录添加一个警告:在系统分区根目录下直接创建一个文件夹C:\是不受欢迎的.考虑让用户选择文件夹或在其中创建文件夹(%APPDATA%或者%LOCALAPPDATA%使用Environment.GetFolderPath).Environment.SpecialFolder枚举的MSDN页面包含特殊操作系统文件夹及其用途的列表.

  • 提及你不需要`Directory.Exists`的+1. (42认同)
  • 这已经出现在其他几个主题上.即使您不需要检查,它确实使代码的意图更加清晰,对于局外人来说可读性也越来越高.所以保持检查可能是一件好事. (10认同)
  • @MattJ.:在这种情况下,我宁愿添加一个简短的评论,而不是无用的函数调用.我同意这种行为并不明显,但另一方面,命名它(更恰当地)`EnsureDirectoryExists`会使该方法更难找到. (6认同)
  • 我不知道自己; 我感到惭愧; 我一直在做,如果不存在,那么创造多年. (4认同)
  • 有点注意:如果文件夹名称与现有文件名匹配,则会抛出`Directory.CreateDirectory`. (3认同)

小智 11

if(!System.IO.Directory.Exists(@"c:\mp_upload"))
{
     System.IO.Directory.CreateDirectory(@"c:\mp_upload");
}
Run Code Online (Sandbox Code Playgroud)


kuf*_*ufi 6

这应该工作

if(!Directory.Exists(@"C:\MP_Upload")) {
    Directory.CreateDirectory(@"C:\MP_Upload");
}
Run Code Online (Sandbox Code Playgroud)