Se uma pasta não existir, crie-a

uso um controlo de ficheiros na minha aplicação. Eu quero salvar um arquivo em uma pasta especificada. Agora eu quero, Se esta pasta não existe, primeiro criá-lo, e então salvar meu arquivo para esta pasta. Se a pasta já existe, então basta salvar o arquivo nela.

Como posso fazer isto?

 523
Author: Jon Schneider, 2012-01-30

15 answers

Como outros já disseram, use System.IO.Directory.CreateDirectory

Mas não precisas de verificar se existe primeiro. Dos documentos

Todas as pastas indicadas na path são criadas, a menos que já existe ou a menos que alguma parte do caminho seja inválida. Caminho o parâmetro indica uma localização de directório, não uma localização de ficheiro. Se a o directório já existe, este método não faz nada.

 931
Author: Mark Peters, 2016-06-22 21:38:57

Utilize o código abaixo, de acordo com 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));
 320
Author: Ravia, 2014-09-04 19:01:50

Escreve esta linha:

System.IO.Directory.CreateDirectory(myDir);
  • Se a pasta não existir Ainda , será criada .
  • Se a pasta já existir , a linha será ignorada.

Referência: artigo sobre a pasta.CreateDirectory no MSDN

 184
Author: Nicolas Raoul, 2015-08-13 03:39:15

Você pode criar o caminho se ele ainda não existir com um método como o seguinte:

using System.IO;

private void CreateIfMissing(string path)
{
  bool folderExists = Directory.Exists(Server.MapPath(path));
  if (!folderExists)
    Directory.CreateDirectory(Server.MapPath(path));
}
 29
Author: Dennis Traub, 2012-01-30 14:53:14

Directory.Exists Isto irá explicar como verificar se existe um ficheiro

Directory.CreateDirectory Isto irá explicar como tentar criar o FilePath se ele não existir

 27
Author: jeroenh, 2017-03-15 14:38:29
using System.IO

if (!Directory.Exists(yourDirectory))
    Directory.CreateDirectory(yourDirectory);
 16
Author: BlackBear, 2012-01-30 14:46:08

Pode utilizar uma cláusula de tentativa/captura e verificar se existe:

  try
  {
    if (!Directory.Exists(path))
    {
       // Try to create the directory.
       DirectoryInfo di = Directory.CreateDirectory(path);
    }
  }
  catch (IOException ioex)
  {
     Console.WriteLine(ioex.Message);
  }
 16
Author: MethodMan, 2016-04-26 14:01:02

Este método irá criar a pasta se não existir e não fará nada se existir

Directory.CreateDirectory(path);
 13
Author: Thakur Rock, 2014-12-30 14:07:34
if (!Directory.Exists(Path.GetDirectoryName(fileName)))
{
    Directory.CreateDirectory(Path.GetDirectoryName(fileName));
}
 11
Author: KiranSolkar, 2015-12-15 10:16:35

Seguir o código é a(s) melhor (S) Linha (s) de código que eu uso que irá criar diretório se não estiver presente .

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

Se o directório já existir, este método não cria um novo directório, mas devolve um objecto DirectoryInfo para o directório existente. >

 5
Author: UJS, 2018-07-13 12:54:56

Esta era a resposta que eu procurava, mas não a encontrei facilmente:

        string pathToNewFolder = System.IO.Path.Combine(parentFolderPath, "NewSubFolder");
        DirectoryInfo directory = Directory.CreateDirectory(pathToNewFolder); 
       // Will create if does not already exist (otherwise will ignore)
  • localização da nova pasta dada
  • a variável de informação da pasta para que possa continuar a manipulá-la como quiser.
 2
Author: BKSpurgeon, 2018-08-09 11:02:19

Utilizar abaixo do Código. Usei este código para copiar ficheiros e criar uma nova pasta.

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

   }
}
 1
Author: Lemon Kazi, 2015-09-13 10:46:52

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

 0
Author: amit, 2015-11-21 09:00:54
string root = @"C:\Temp";

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

// If directory does not exist, create it.

if (!Directory.Exists(root))
{

Directory.CreateDirectory(root);

}

O CreateDirectory também é usado para criar um sub directório. Tudo o que você tem a fazer é especificar a localização do diretório no qual esta subdiretoria será criada. O seguinte excerto de código cria uma subdiretoria de Mahesh em C:\Temp directory.

// Create sub directory

if (!Directory.Exists(subdir))
{

Directory.CreateDirectory(subdir);

}
 -1
Author: uksp, 2014-12-20 08:04:54

Derivado/combinado de várias respostas, implementá-lo para mim foi tão fácil como isto:

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

private void CreateDirectoryIfDoesNotExist(string dirName)
{
    System.IO.Directory.CreateDirectory(dirName);
}
 -2
Author: B. Clay Shannon, 2015-10-28 18:40:25