J'ai un morceau de code ici qui se casse si le répertoire n'existe pas:
System.IO.File.WriteAllText(filePath, content);
En une ligne (ou en quelques lignes), est-il possible de vérifier si le répertoire menant au nouveau fichier n'existe pas et sinon, de le créer avant de créer le nouveau fichier?
J'utilise .NET 3.5.
Réponses:
Créer
(new FileInfo(filePath)).Directory.Create()
Avant d'écrire dans le fichier..... Ou, s'il existe, alors créez (sinon ne faites rien)
la source
Task.Run(() => );
.Vous pouvez utiliser le code suivant
la source
Directory.CreateDirectory
fait exactement ce que vous voulez: il crée le répertoire s'il n'existe pas encore. Il n'est pas nécessaire de faire une vérification explicite en premier .path
est un fichier et non un répertoire. msdn.microsoft.com/en-us/library/54a0at6s(v=vs.110).aspxComme l'a dit @hitec, vous devez vous assurer que vous avez les bonnes autorisations, si vous le faites, vous pouvez utiliser cette ligne pour garantir l'existence du répertoire:
Directory.CreateDirectory(Path.GetDirectoryName(filePath))
la source
Une manière élégante de déplacer votre fichier vers un répertoire inexistant consiste à créer l'extension suivante à la classe FileInfo native:
Utilisez ensuite la toute nouvelle extension MoveTo:
Consultez la documentation de l'extension des méthodes .
la source
Vous pouvez utiliser File.Exists pour vérifier si le fichier existe et le créer à l'aide de File.Create si nécessaire. Assurez-vous de vérifier si vous avez accès à la création de fichiers à cet emplacement.
Une fois que vous êtes certain que le fichier existe, vous pouvez y écrire en toute sécurité. Bien que par précaution, vous devriez mettre votre code dans un bloc try ... catch et intercepter les exceptions que la fonction est susceptible de déclencher si les choses ne se passent pas exactement comme prévu.
Informations supplémentaires pour les concepts d'E / S de fichiers de base .
la source
var filePath = context.Server.MapPath(Convert.ToString(ConfigurationManager.AppSettings["ErrorLogFile"]));
var file = new FileInfo(filePath);
file.Directory.Create();
Si le répertoire existe déjà, cette méthode ne fait rien.var sw = new StreamWriter(filePath, true);
sw.WriteLine(Enter your message here);
sw.Close();
la source