关于c#:如果文件夹不存在,请创建它

If a folder does not exist, create it

我在应用程序中使用了一个FileUploader控件。我要将文件保存到指定的文件夹中。现在,如果这个文件夹不存在,我想先创建它,然后将我的文件保存到这个文件夹。如果文件夹已经存在,只需将文件保存在其中。

我该怎么做?


如其他人所说,使用System.IO.Directory.CreateDirectory

但是,您不需要先检查它是否存在。从文档

Any and all directories specified in path are created, unless they already exist or unless some part of path is invalid. If the directory already exists, this method does not create a new directory, but it returns a DirectoryInfo object for the existing directory.


按照http://forums.as p.net/p/1226236/2209871.aspx使用以下代码:

1
2
3
4
5
6
string subPath ="ImagesPath"; // your code goes here

bool exists = System.IO.Directory.Exists(Server.MapPath(subPath));

if(!exists)
    System.IO.Directory.CreateDirectory(Server.MapPath(subPath));


只需写这一行:

1
System.IO.Directory.CreateDirectory("my folder");
  • 如果文件夹尚不存在,将创建它。
  • 如果文件夹已经存在,则该行将被忽略。

参考:关于msdn上directory.createditory的文章

当然,您也可以在源文件的顶部写入using System.IO;,然后每次创建文件夹时只写入Directory.CreateDirectory("my folder");


如果路径尚不存在,可以使用以下方法创建路径:

1
2
3
4
5
6
7
8
using System.IO;

private void CreateIfMissing(string path)
{
  bool folderExists = Directory.Exists(Server.MapPath(path));
  if (!folderExists)
    Directory.CreateDirectory(Server.MapPath(path));
}


Directory.Exists这将解释如何检查文件路径是否存在。

Directory.CreateDirectory这将解释如何尝试并在文件路径不存在的情况下创建文件路径。


您可以使用try/catch子句并检查它是否存在:

1
2
3
4
5
6
7
8
9
10
11
12
  try
  {
    if (!Directory.Exists(path))
    {
       // Try to create the directory.
       DirectoryInfo di = Directory.CreateDirectory(path);
    }
  }
  catch (IOException ioex)
  {
     Console.WriteLine(ioex.Message);
  }


1
2
3
4
using System.IO

if (!Directory.Exists(yourDirectory))
    Directory.CreateDirectory(yourDirectory);

如果不存在,此方法将创建文件夹;如果存在,则不执行任何操作。

1
Directory.CreateDirectory(path);

1
2
3
4
if (!Directory.Exists(Path.GetDirectoryName(fileName)))
{
    Directory.CreateDirectory(Path.GetDirectoryName(fileName));
}


下面的代码是我使用的最好的代码行,如果不存在,它将创建目录。

1
System.IO.Directory.CreateDirectory(HttpContext.Current.Server.MapPath("~/temp/"));

如果目录已经存在,此方法不会创建新目录,但会为现有目录返回DirectoryInfo对象。>


这是我正在寻找的答案,但并不容易找到:

1
2
3
        string pathToNewFolder = System.IO.Path.Combine(parentFolderPath,"NewSubFolder");
        DirectoryInfo directory = Directory.CreateDirectory(pathToNewFolder);
       // Will create if does not already exist (otherwise will ignore)
  • 指定的新文件夹路径
  • 目录信息变量,以便您可以根据需要继续操作它。


使用下面的代码。我使用此代码进行文件复制并创建新文件夹。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
string fileToCopy ="filelocation\\file_name.txt";
String server = Environment.UserName;
string newLocation ="C:\\Users\" + server +"\\Pictures\\Tenders\\file_name.txt";
string folderLocation ="
C:\\Users\" + server +"\\Pictures\\Tenders\";
bool exists = System.IO.Directory.Exists(folderLocation);

if (!exists)
{
   System.IO.Directory.CreateDirectory(folderLocation);
   if (System.IO.File.Exists(fileToCopy))
   {
     MessageBox.Show("
file copied");
     System.IO.File.Copy(fileToCopy, newLocation, true);

   }
   else
   {
      MessageBox.Show("
no such files");

   }
}

string createfolder ="E:/tmp/" + uId;
System.IO.Directory.CreateDirectory(createfolder);


1
2
3
4
5
6
7
8
9
10
11
12
string root = @"C:\Temp";

string subdir = @"C:\Temp\Mahesh";

// If directory does not exist, create it.

if (!Directory.Exists(root))
{

Directory.CreateDirectory(root);

}

createDirectory还用于创建子目录。您所要做的就是指定将在其中创建子目录的目录的路径。下面的代码片段在C:\Temp directory中创建一个mahesh子目录。

1
2
3
4
5
6
7
8
// Create sub directory

if (!Directory.Exists(subdir))
{

Directory.CreateDirectory(subdir);

}

从多个答案中派生/组合,为我实现它是如此简单:

1
2
3
4
5
6
7
8
9
10
public void Init()
{
    String platypusDir = @"C:\platypus";
    CreateDirectoryIfDoesNotExist(platypusDir);
}

private void CreateDirectoryIfDoesNotExist(string dirName)
{
    System.IO.Directory.CreateDirectory(dirName);
}