web-dev-qa-db-fra.com

Si un dossier n'existe pas, créez-le

J'utilise un contrôle FileUploader dans mon application. Je veux enregistrer un fichier dans un dossier spécifié. Maintenant, je veux, si ce dossier n'existe pas, le créer d'abord, puis enregistrer mon fichier dans ce dossier. Si le dossier existe déjà, alors enregistrez simplement le fichier.

Comment puis-je faire ceci?

636
Tavousi

Comme d’autres l’ont dit, utilisez System.IO.Directory.CreateDirectory

Mais vous n'avez pas besoin de vérifier s'il existe en premier. De la docs

Tous les répertoires spécifiés dans path sont créés, sauf s’ils existent déjà ou si une partie du chemin n’est pas valide. Si le répertoire existe déjà, cette méthode ne crée pas de nouveau répertoire, mais renvoie un objet DirectoryInfo pour le répertoire existant.

1114
Mark Peters

Utilisez le code ci-dessous selon 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));
338
Ravia

Il suffit d'écrire cette ligne:

System.IO.Directory.CreateDirectory("my folder");
  • Si le dossier n'existe pas encore , il sera créé .
  • Si le dossier existe déjà , la ligne sera ignorée .

Référence: Article sur Directory.CreateDirectory sur MSDN

Bien sûr, vous pouvez également écrire using System.IO; en haut du fichier source, puis simplement écrire Directory.CreateDirectory("my folder"); à chaque fois que vous souhaitez créer un dossier.

205
Nicolas Raoul

Directory.Exists Ceci expliquera comment vérifier si un chemin de fichier existe

Directory.CreateDirectory Ceci expliquera comment essayer et créer le chemin de fichier s'il n'existe pas

28
jeroenh

Vous pouvez créer le chemin s'il n'existe pas encore avec une méthode comme celle-ci:

using System.IO;

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

Vous pouvez utiliser une clause try/catch et vérifier si elle existe:

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

Cette méthode créera un dossier s'il n'existe pas et ne fait rien s'il existe.

Directory.CreateDirectory(path);
15
Thakur Rock
using System.IO

if (!Directory.Exists(yourDirectory))
    Directory.CreateDirectory(yourDirectory);
15
BlackBear
if (!Directory.Exists(Path.GetDirectoryName(fileName)))
{
    Directory.CreateDirectory(Path.GetDirectoryName(fileName));
}
13
KiranSolkar

Le code suivant est la (les) meilleure (s) ligne (s) de code que j’utilise qui créera un répertoire s’il n’est pas présent.

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

Si le répertoire existe déjà, cette méthode ne crée pas de nouveau répertoire, mais renvoie un objet DirectoryInfo pour le répertoire existant. >

6
UJS

C'était la réponse que je cherchais, mais que je n'ai pas facilement trouvée:

        string pathToNewFolder = System.IO.Path.Combine(parentFolderPath, "NewSubFolder");
        DirectoryInfo directory = Directory.CreateDirectory(pathToNewFolder); 
       // Will create if does not already exist (otherwise will ignore)
  • chemin vers le nouveau dossier donné
  • répertoire info variable afin que vous puissiez continuer à le manipuler à votre guise.
2
BKSpurgeon

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

0
amit

Utilisez le code ci-dessous. J'ai utilisé ce code pour copier un fichier et créer un nouveau dossier.

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

   }
}
0
Lemon Kazi