提问



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


我怎么能这样做?

最佳参考


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


但是,你不需要先检查它是否存在。来自文档[17]



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


其它参考1


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


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


只需写下这一行:


System.IO.Directory.CreateDirectory(myDir);



  • 如果文件夹尚不存在,则会创建

  • 如果文件夹已存在,则该行将忽略



参考:关于MSDN上的Directory.CreateDirectory的文章[19]

其它参考3


如果路径尚不存在,则可以创建路径,如下所示:


using System.IO;

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

其它参考4


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


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

其它参考5


using System.IO

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

其它参考6


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


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

其它参考7


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


Directory.CreateDirectory(path);

其它参考8


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

其它参考9


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


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


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

其它参考10


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


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

   }
}

其它参考11



  string createfolder =E:/tmp/+ uId;

  System.IO.Directory.CreateDirectory(createfolder);


其它参考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子目录。


// Create sub directory

if (!Directory.Exists(subdir))
{

Directory.CreateDirectory(subdir);

}

其它参考13


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


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

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