C-SHARP - 5.6 Exercice

Cet exercice de fin de section consolide la manipulation des fichiers et répertoires en C# vue dans les leçons précédentes. Il mobilise les classes File, Directory, Path ainsi que les notions de boucles et de conditions.

Énoncé

Écrivez un programme qui demande à l'utilisateur le chemin d'un dossier, puis :

  • vérifie que le dossier existe (sinon affiche une erreur) ;
  • liste tous les fichiers présents dans ce dossier avec leur nom, leur extension et leur taille ;
  • crée un sous-dossier nommé « archives » à l'intérieur ;
  • copie chaque fichier .txt trouvé dans ce nouveau sous-dossier.

Pistes de solution

On utilise Directory.Exists pour la vérification, Directory.GetFiles pour lister, Path.GetExtension pour filtrer les extensions, Path.Combine pour construire les chemins de destination et File.Copy pour la copie effective :

using System.IO;

Console.Write("Chemin du dossier : ");
string dossier = Console.ReadLine();

if (!Directory.Exists(dossier))
{
    Console.WriteLine("Le dossier n'existe pas.");
    return;
}

string archives = Path.Combine(dossier, "archives");
Directory.CreateDirectory(archives);

foreach (string fichier in Directory.GetFiles(dossier))
{
    FileInfo info = new FileInfo(fichier);
    Console.WriteLine($"{info.Name} ({info.Extension}, {info.Length} o)");

    if (Path.GetExtension(fichier) == ".txt")
    {
        string destination = Path.Combine(archives, info.Name);
        File.Copy(fichier, destination, overwrite: true);
    }
}

Cet exercice combine quasiment toutes les notions de la section : tests d'existence, lecture d'informations sur les fichiers, création de répertoire, filtrage par extension et copie ciblée. Si vous êtes à l'aise avec ce programme, vous maîtrisez l'essentiel de la manipulation de fichiers en C#. La prochaine section abordera des sujets plus avancés.