C-SHARP - 5.3 File et FileInfo

Les classes File et FileInfo du namespace System.IO permettent toutes deux de manipuler des fichiers en C#. Elles offrent des fonctionnalités identiques mais selon deux approches différentes — il est important de comprendre la nuance pour choisir la bonne dans chaque situation.

La classe File : approche statique

La classe File expose des méthodes statiques : on les appelle directement sans créer d'instance. Idéale pour une opération ponctuelle sur un fichier — vérification d'existence, lecture rapide, suppression, copie. Exemples :

using System.IO;

if (File.Exists("data.txt"))
{
    string contenu = File.ReadAllText("data.txt");
    File.WriteAllText("backup.txt", contenu);
    File.Copy("data.txt", "data-copy.txt");
    File.Delete("ancien.txt");
}

La classe FileInfo : approche orientée objet

La classe FileInfo représente un fichier sous forme d'objet. On instancie un FileInfo une fois en lui passant le chemin, puis on appelle ses méthodes d'instance. C'est plus performant que File lorsqu'on effectue plusieurs opérations sur le même fichier, car FileInfo évite de revérifier l'existence et les droits à chaque appel.

FileInfo fichier = new FileInfo("data.txt");
Console.WriteLine(fichier.Length);          // taille en octets
Console.WriteLine(fichier.CreationTime);    // date de creation
fichier.CopyTo("data-copy.txt");
fichier.MoveTo("nouveau-emplacement.txt");
fichier.Delete();

Quelle classe choisir ?

File est plus adaptée pour une action unique. FileInfo est préférable lorsqu'on enchaîne plusieurs accès au même fichier, ou quand on a besoin d'informations détaillées (taille, dates, attributs). Les deux travaillent ensemble dans la pratique : on peut tester l'existence avec File.Exists() puis instancier un FileInfo pour les opérations suivantes.