HOWTO · Csharp

Comment renommer un fichier en C#

Cet article présente la manière de renommer un fichier en C#. Il inclut les méthodes Move() et Copy().

Sur cette page

En C#, renommer un fichier consiste à le déplacer vers un nouveau chemin. Utilisez File.Move si le fichier ne doit plus se trouver à son ancien emplacement. Utilisez File.Copy si vous souhaitez créer un second fichier sous le nouveau nom tout en conservant l’original. Les deux opérations prennent un chemin source et un chemin de destination. Pour changer uniquement le nom du fichier, combinez le même répertoire avec le nouveau nom.

Les exemples ci-dessous créent leurs propres fichiers temporaires afin que vous puissiez adapter la construction des chemins à votre application. Les deux exemples ont réussi lors de la vérification d’exécution fournie et n’affichent rien dans la console.

Renommer un fichier avec File.Move

File.Move transfère un fichier de son chemin source vers son chemin de destination. Pour le renommer dans le même répertoire, construisez le chemin de destination à partir de ce répertoire et du nouveau nom de fichier. Une fois le déplacement réussi, le fichier se trouve à destination et n’est plus disponible à son chemin source.

Ce programme complet crée un fichier source temporaire, le déplace sous un nouveau nom dans le même répertoire, puis supprime le répertoire temporaire à la fin :

Le code et les libellés ou sorties affichés dans cette section restent en anglais.

using System;
using System.IO;

class Program
{
    static void Main()
    {
        string directory = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString());
        Directory.CreateDirectory(directory);
        string sourcePath = Path.Combine(directory, "old-name.txt");
        string destinationPath = Path.Combine(directory, "new-name.txt");

        try
        {
            File.WriteAllText(sourcePath, "Example content");
            File.Move(sourcePath, destinationPath);
        }
        finally
        {
            Directory.Delete(directory, true);
        }
    }
}

La chaîne Example content, écrite dans le fichier par l’exemple, reste en anglais dans le bloc de code.

Le fichier source doit exister et le chemin de destination doit être utilisable. Si la destination se trouve dans un autre répertoire, l’opération y déplace également le fichier tout en changeant son nom. File.Move convient donc lorsque l’ancien chemin ne doit plus désigner le fichier ; cette opération ne laisse pas de copie supplémentaire.

Créer une copie renommée avec File.Copy

Choisissez File.Copy si vous souhaitez conserver à la fois l’original et un fichier portant le nouveau nom. Son premier argument désigne le fichier source existant ; le second indique le chemin où créer la copie. La destination peut se trouver dans le même répertoire pour créer une copie qui ressemble à un simple renommage, ou dans un autre répertoire si la copie doit être placée ailleurs.

Ce programme complet crée un fichier source temporaire, le copie sous un nouveau nom, puis supprime les deux fichiers avec leur répertoire :

Le code et les libellés ou sorties affichés dans cette section restent en anglais.

using System;
using System.IO;

class Program
{
    static void Main()
    {
        string directory = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString());
        Directory.CreateDirectory(directory);
        string sourcePath = Path.Combine(directory, "old-name.txt");
        string destinationPath = Path.Combine(directory, "new-name.txt");

        try
        {
            File.WriteAllText(sourcePath, "Example content");
            File.Copy(sourcePath, destinationPath);
        }
        finally
        {
            Directory.Delete(directory, true);
        }
    }
}

La chaîne Example content, écrite dans le fichier par l’exemple, reste en anglais dans le bloc de code.

Une fois la copie créée, le fichier source reste à son emplacement d’origine et le nouveau fichier est disponible à destination. Cette solution est utile lorsque vous devez conserver l’original, par exemple comme sauvegarde ou comme entrée pour une autre opération. N’oubliez pas que la copie occupe de l’espace supplémentaire et que les modifications ultérieures apportées à l’un des fichiers ne sont pas répercutées automatiquement dans l’autre.

Gérer les chemins et les fichiers déjà présents à destination

Utilisez des chaînes C# valides pour les chemins. Une chaîne littérale verbatim telle que @"C:\\example\\old-name.txt" empêche les barres obliques inverses d’être interprétées comme des caractères d’échappement ; Path.Combine est une autre façon pratique de construire un chemin à partir d’un répertoire et d’un nom de fichier. Les programmes d’exemple utilisent Path.Combine avec un répertoire temporaire afin de ne dépendre ni d’un lecteur particulier ni d’un dossier déjà présent. Dans une application, choisissez un répertoire auquel le processus peut accéder et assurez-vous, si nécessaire, que son dossier parent existe.

Le fichier source doit exister pour que l’une ou l’autre opération réussisse. Un nom de fichier mal orthographié, un répertoire de travail inattendu ou un chemin vers un dossier inexistant peut empêcher l’opération. Dans la mesure du possible, construisez les chemins à partir de valeurs de répertoire connues et vérifiez que le fichier source est bien celui que vous souhaitez déplacer ou copier avant de le modifier.

Par défaut, File.Move et File.Copy ne remplacent pas un fichier déjà présent à destination. Si le nom de destination est peut-être déjà utilisé, choisissez-en un autre ou gérez ce cas avant d’appeler l’opération. La disponibilité ou le comportement des surcharges permettant l’écrasement dépend du framework cible ; consultez donc la documentation du framework visé par votre application avant de vous fier à une surcharge. Ne supposez pas qu’un renommage remplace silencieusement un fichier existant.

En résumé, utilisez File.Move pour déplacer le fichier vers son nouveau chemin, et File.Copy pour créer un doublon stocké séparément tout en conservant la source. Le bon choix dépend de la nécessité de conserver ou non le fichier d’origine à son ancien emplacement.