147 votes

Comment créer un fichier ET des dossiers si ceux-ci n'existent pas?

imaginez je souhaite créer (ou remplacer) les fichiers suivants :- C:\Temp\Bar\Foo\Test.txt

En utilisant le Fichier.Créer(..) de la méthode, cela peut le faire.

MAIS, si je n'ai pas soit l'un des dossiers suivants (à partir de cet exemple de chemin d'accès, ci-dessus)

  • Temp
  • Bar
  • Foo

puis-je obtenir un DirectoryNotFoundException levée.

Donc .. étant donné un chemin, comment pouvons-nous récursive de créer tous les dossiers nécessaires pour créer le fichier .. pour ce chemin? Si la température ou de la Barre de dossiers existe, mais Toto n'est pas... alors qu'est créé aussi.

Pour des raisons de simplicité, permet de supposer il n'y a pas de problèmes de Sécurité -- toutes les autorisations sont beaux, etc.

158voto

phq Points 1851

Pour résumer ce qui a été commenté dans d’autres réponses:

 //path = @"C:\Temp\Bar\Foo\Test.txt";
Directory.CreateDirectory(Path.GetDirectoryName(path));
 

Directory.CreateDirectory créeront les répertoires de manière récursive et si le répertoire existe déjà, il retournera sans erreur.

S'il y a un fichier Foo à C:\Temp\Bar\Foo une exception sera levée.

131voto

Adkins Points 1601
 // Determine whether the directory exists.
if (Directory.Exists(path)) 
{
    Console.WriteLine("That path exists already.");
    return;
}

// Try to create the directory.
DirectoryInfo di = Directory.CreateDirectory(path);
Console.WriteLine("The directory was created successfully at {0}.",
    Directory.GetCreationTime(path));
 

Voir cette page MSDN .

J'espère que ça aide!

16voto

Grzenio Points 16802

Utilisez Directory.CreateDirectory avant de créer le fichier. Il crée le dossier de manière récursive pour vous.

4voto

Arseny Points 4270

. étant donné un chemin, comment pouvons-nous créer récursivement tous les dossiers nécessaires pour créer le fichier .. pour ce chemin

Crée tous les répertoires et sous-répertoires comme spécifié par chemin.

 Directory.CreateDirectory(path);
 

alors vous pouvez créer un fichier.

2voto

Nick Points 383

Vous devez utiliser Directory.CreateDirectory.

http://msdn.microsoft.com/en-us/library/54a0at6s.aspx

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X