Renommer un répertoire en C#
Je ne pouvais pas trouver un DirectoryInfo.Renommer(À) ou FileInfo.Renommer(À) la méthode de n'importe où. Alors, j'ai écrit mon propre et je poste ici pour quiconque d'utiliser s'ils en ont besoin, parce que avouons-le : la MoveTo méthodes sont beaucoup trop lourds et demandera toujours de la logique supplémentaire si vous voulez juste pour renommer un fichier ou de répertoire :
public static class DirectoryExtensions
{
public static void RenameTo(this DirectoryInfo di, string name)
{
if (di == null)
{
throw new ArgumentNullException("di", "Directory info to rename cannot be null");
}
if (string.IsNullOrWhiteSpace(name))
{
throw new ArgumentException("New name cannot be null or blank", "name");
}
di.MoveTo(Path.Combine(di.Parent.FullName, name));
return; //done
}
}
- Pourriez-vous reformuler la question et après une réponse contenant votre solution?
- Pas une question? 🙁
- Semble exagéré en lui-même.
- C'est en fait plus exagéré que d'appeler MoveTo directement.
- Le retour à la fin est redondant
Vous devez vous connecter pour publier un commentaire.
Il n'y a pas de différence entre le déplacement et renommage; vous devez simplement appeler
Répertoire.Déplacer
.En général, si vous êtes seulement à faire une seule opération, vous devez utiliser le
static
méthodes dans leFile
etDirectory
classes au lieu de créerFileInfo
etDirectoryInfo
objets.Pour plus de conseils lorsque vous travaillez avec des fichiers et des répertoires, voir ici.
foo
àFoo
va jeter un IOException quand fait avec un simpleDirectory.Move
que les deux sont considérés comme le même chemin. Donc, il y a une différence... juste pour dire.Vous devez la déplacer:
Il en existe déjà un. Si vous ne pouvez pas obtenir sur le "Move" de la syntaxe de la
System.IO
espace de noms. Il y a une classe statiqueFileSystem
dans le Microsoft.VisualBasic.FileIO de noms qui possède à la fois uneRenameDirectory
etRenameFile
déjà en son sein.Comme mentionné par SLaks, c'est juste un wrapper pour
Directory.Move
etFile.Move
.Directory.Move
etFile.Move
. Je l'ai vérifié.