web-dev-qa-db-fra.com

Renommer un répertoire en C #

Je n'ai trouvé aucune méthode DirectoryInfo.Rename (To) ou FileInfo.Rename (To) n'importe où. J'ai donc écrit le mien et je le poste ici pour que quiconque puisse l'utiliser s'il en a besoin, car avouons-le: les méthodes MoveTo sont exagérées et nécessiteront toujours une logique supplémentaire si vous voulez simplement renommer un répertoire ou un fichier:

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
    }
}
59
Alex Marshall

Il n'y a aucune différence entre déplacer et renommer; vous devez simplement appeler Directory.Move .

En général, si vous ne faites qu'une seule opération, vous devez utiliser les méthodes static dans les classes File et Directory au lieu de créer FileInfo et DirectoryInfo objets.

Pour plus de conseils lorsque vous travaillez avec des fichiers et des répertoires, consultez ici .

114
SLaks

Vous devez le déplacer:

Directory.Move(source, destination);
59
Rubens Farias

Un existe déjà. Si vous ne pouvez pas surmonter la syntaxe "Déplacer" du System.IO espace de noms. Il y a une classe statique FileSystem dans l'espace de noms Microsoft.VisualBasic.FileIO qui contient à la fois RenameDirectory et RenameFile.

Comme mentionné par SLaks, ce n'est qu'un wrapper pour Directory.Move et File.Move.

15
jsmith