如果文件夹不存在,请创建它

时间:2012-01-30 14:42:15

标签: c# asp.net directory

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

我怎么能这样做?

16 个答案:

答案 0 :(得分:1071)

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

但是,您不需要先检查它是否存在。来自docs

  

创建路径中指定的任何和所有目录,除非它们已存在或除非某些路径部分无效。如果该目录已存在,则此方法不会创建新目录,但会返回现有目录的DirectoryInfo对象。

答案 1 :(得分:334)

根据http://forums.asp.net/p/1226236/2209871.aspx使用以下代码:

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));

答案 2 :(得分:195)

只需写下这一行:

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

参考:Article about Directory.CreateDirectory at MSDN

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

答案 3 :(得分:28)

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

using System.IO;

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

答案 4 :(得分:27)

Directory.Exists这将解释如何检查FilePath是否存在

Directory.CreateDirectory这将解释如何尝试创建FilePath(如果它不存在)

答案 5 :(得分:17)

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

  try
  {
    if (!Directory.Exists(path))
    {
       // Try to create the directory.
       DirectoryInfo di = Directory.CreateDirectory(path);
    }
  }
  catch (IOException ioex)
  {
     Console.WriteLine(ioex.Message);
  }

答案 6 :(得分:16)

using System.IO

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

答案 7 :(得分:14)

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

Directory.CreateDirectory(path);

答案 8 :(得分:12)

if (!Directory.Exists(Path.GetDirectoryName(fileName)))
{
    Directory.CreateDirectory(Path.GetDirectoryName(fileName));
}

答案 9 :(得分:6)

以下代码是我使用的最佳代码行,如果不存在则会创建目录。

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

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

答案 10 :(得分:2)

这是我一直在寻找的答案,但没有找到:

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

答案 11 :(得分:0)

  

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

答案 12 :(得分:0)

如果该文件夹未出现在图像文件夹或其他文件夹下,请使用此代码

string subPath = HttpContext.Current.Server.MapPath(@"~/Images/RequisitionBarCode/");

bool exists = System.IO.Directory.Exists(subPath);
if(!exists)
    System.IO.Directory.CreateDirectory(subPath);

string path = HttpContext.Current.Server.MapPath(@"~/Images/RequisitionBarCode/" + OrderId + ".png");

答案 13 :(得分:-1)

一种奇特的方法是使用所需的方法扩展FileUpload

添加此内容:

public static class FileUploadExtension
{
    public static void SaveAs(this FileUpload, string destination, bool autoCreateDirectory) { 

        if (autoCreateDirectory)
        {
            var destinationDirectory = new DirectoryInfo(Path.GetDirectoryName(destination));

            if (!destinationDirectory.Exists)
                destinationDirectory.Create();
        }

        file.SaveAs(destination);
    }
}

然后使用它:

FileUpload file;
...
file.SaveAs(path,true);

答案 14 :(得分:-2)

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子目录。

// Create sub directory

if (!Directory.Exists(subdir))
{

Directory.CreateDirectory(subdir);

}

答案 15 :(得分:-4)

从多个答案派生/组合,为我实现它就像这样简单:

public void Init()
{
    String platypusDir = @"C:\platypus";
    CreateDirectoryIfDoesNotExist(platypusDir);
}

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