Imaginez que je souhaite créer (ou écraser) le fichier suivant: - C:\Temp\Bar\Foo\Test.txt
En utilisant la méthode File.Create (..) , cela peut le faire.
MAIS, si je n'ai aucun des dossiers suivants (à partir de cet exemple de chemin, ci-dessus)
- Temp
- Bar
- Foo
puis j'obtiens une DirectoryNotFoundException lancée.
Alors .. étant donné un chemin, comment pouvons-nous créer récursivement tous les dossiers nécessaires pour créer le fichier .. pour ce chemin? Si des dossiers Temp ou Bar existent, mais pas Foo ... alors cela est également créé.
Pour plus de simplicité, supposons qu'il n'y a pas de problèmes de sécurité - toutes les autorisations sont correctes, etc.
c#
.net
file-access
Pure.Krome
la source
la source
Réponses:
Consultez cette page MSDN .
J'espère que cela aide!
la source
Directory.CreateDirectory
sansDirectory.Exists
vérification préalable - il ne sera pas lancé si le répertoire est déjà là.Path.GetDirectoryName(string path)
d'obtenir le répertoire à partir de votre chemin completpath
ne doit pas contenir le nom du fichier. Donc, en utilisant l'exemple de l'OPpath
devrait êtreC:\Temp\Bar\Foo
. Après avoir appelé,Directory.CreateDirectory(path);
vous devez toujours appelerFile.Create("C:\Temp\Bar\Foo\Test.txt");
pour créer le fichier.Pour résumer ce qui a été commenté dans d'autres réponses:
Directory.CreateDirectory
créera les répertoires de manière récursive et si le répertoire existe déjà, il retournera sans erreur.S'il y a eu un fichier
Foo
àC:\Temp\Bar\Foo
une exception sera levée.la source
Utilisez Directory.CreateDirectory avant de créer le fichier. Il crée le dossier de manière récursive pour vous.
la source
Crée tous les répertoires et sous-répertoires comme spécifié par chemin.
alors vous pouvez créer un fichier.
la source
Vous devrez vérifier les deux parties du chemin (répertoire et nom de fichier) et créer chacune si elle n'existe pas.
Utilisez
File.Exists
etDirectory.Exists
pour savoir s'ils existent.Directory.CreateDirectory
créera le chemin complet pour vous, vous n'aurez donc besoin de l'appeler qu'une seule fois si le répertoire n'existe pas, puis créez simplement le fichier.la source
Vous devez utiliser Directory.CreateDirectory.
http://msdn.microsoft.com/en-us/library/54a0at6s.aspx
la source
Vous voulez Directory.CreateDirectory ()
Voici une classe que j'utilise (convertie en C #) que si vous lui passez un répertoire source et une destination, elle copiera tous les fichiers et sous-dossiers de ce répertoire vers votre destination:
}
la source
using Microsoft.VisualBasic;
Evil !!En supposant que votre assembly / exe a l' autorisation FileIO est lui-même, ce n'est pas bien. Votre application peut ne pas fonctionner avec les droits d'administrateur. Il est important de prendre en compte la sécurité d'accès au code et de demander des autorisations Exemple de code:
Comprendre la sécurité d'accès au code .NET
La «sécurité d'accès au code» est-elle d'une utilité réelle?
la source
Je sais qu'il y a d'autres réponses ici, mais aucune d'entre elles n'est pas assez complète, le code suivant créera des répertoires (s'il n'existe pas) et copiera ensuite les fichiers .
la source