Если папка не существует, создайте ее - PullRequest
621 голосов
/ 30 января 2012

Я использую элемент управления FileUploader в своем приложении.Я хочу сохранить файл в указанной папке.Теперь я хочу, если эта папка не существует, сначала создать ее, а затем сохранить мой файл в эту папку.Если папка уже существует, просто сохраните в ней файл.

Как я могу это сделать?

Ответы [ 15 ]

1093 голосов
/ 30 января 2012

Как уже говорили другие, используйте System.IO.Directory.CreateDirectory

Но вам не нужно проверять, существует ли он первым. Из документов

Любые и все каталоги, указанные в пути, создаются, если они не существуют или если какая-то часть пути недопустима. Если каталог уже существует, этот метод не создает новый каталог, но возвращает объект DirectoryInfo для существующего каталога.

336 голосов
/ 30 января 2012

Используйте приведенный ниже код согласно 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));
200 голосов
/ 27 августа 2014

Просто напишите эту строку:

System.IO.Directory.CreateDirectory("my folder");
  • Если папка еще не существует , она будет создана .
  • Если папка уже существует , строка будет игнорироваться .

Ссылка: Статья о Directory.CreateDirectory на MSDN

Конечно, вы также можете написать using System.IO; в верхней части исходного файла, а затем просто писать Directory.CreateDirectory("my folder"); каждый раз, когда вы хотите создать папку.

28 голосов
/ 30 января 2012

Вы можете создать путь, если он еще не существует, с помощью метода, подобного следующему:

using System.IO;

private void CreateIfMissing(string path)
{
  bool folderExists = Directory.Exists(Server.MapPath(path));
  if (!folderExists)
    Directory.CreateDirectory(Server.MapPath(path));
}
27 голосов
/ 30 января 2012

Directory.Exists Это объяснит, как проверить, существует ли FilePath

Directory.CreateDirectory Это объяснит, как попробовать и создать FilePath, если он не существует

17 голосов
/ 30 января 2012

Вы можете использовать предложение try / catch и проверить, существует ли оно:

  try
  {
    if (!Directory.Exists(path))
    {
       // Try to create the directory.
       DirectoryInfo di = Directory.CreateDirectory(path);
    }
  }
  catch (IOException ioex)
  {
     Console.WriteLine(ioex.Message);
  }
16 голосов
/ 30 января 2012
using System.IO

if (!Directory.Exists(yourDirectory))
    Directory.CreateDirectory(yourDirectory);
15 голосов
/ 30 декабря 2014

Этот метод создаст папку, если она не существует, и ничего не сделает, если существует

Directory.CreateDirectory(path);
13 голосов
/ 15 декабря 2015
if (!Directory.Exists(Path.GetDirectoryName(fileName)))
{
    Directory.CreateDirectory(Path.GetDirectoryName(fileName));
}
6 голосов
/ 25 ноября 2016

Следующий код - лучшая строка (и) кода, который я использую, который создаст каталог, если его нет.

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

Если каталог уже существует, этот метод не создает новый каталог, но возвращает объект DirectoryInfo для существующего каталога. >

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...