Если папка не существует, создайте ее

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

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

15 ответов


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

но вам не нужно сначала проверять, существует ли он. От docs

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


использовать ниже код, как в 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));

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

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

ссылки: статья о каталоге.CreateDirectory на веб-узле MSDN


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

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 это объяснит, как попытаться создать путь к файлу, если он не существует


using System.IO

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

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

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

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

Directory.CreateDirectory(path);

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

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

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

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


        string pathToNewFolder = System.IO.Path.Combine(parentFolderPath, "NewSubFolder");
        DirectoryInfo directory = Directory.CreateDirectory(pathToNewFolder); 
       // Will create if does not already exist (otherwise will ignore)
  • путь к новой папке даны
  • переменная информации о каталоге, чтобы вы могли продолжать манипулировать ею, как вам угодно.

использовать ниже код. Я использовал этот код для копирования файлов и создания новой папки.

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

   }
}

строка createfolder = "E:/tmp /" + uId;
Система.ИО.Справочник.CreateDirectory (createfolder);


string root = @"C:\Temp";

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

// If directory does not exist, create it.

if (!Directory.Exists(root))
{

Directory.CreateDirectory(root);

}

CreateDirectory также используется для создания подкаталога. Все, что вам нужно сделать, это указать путь к каталогу, в котором будет создан этот подкаталог. Следующий фрагмент кода создает подкаталог Mahesh в C:\Temp directory.

// Create sub directory

if (!Directory.Exists(subdir))
{

Directory.CreateDirectory(subdir);

}

производный / объединенный из нескольких ответов, реализация его для меня была так же проста, как это:

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

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