Manipulation de fichiers : lecture / ecriture

Manipulation des fichiers : lecture et écriture

La manipulation de fichiers textes peut être fort utile, il est très fréquent d'avoir besoin de stocker des informations dans un fichier ou de récupérer les données dans un fichier. Ce que nous allons effectuer au cours de ce tutoriel est en fait apprendre à lire et écrire des fichiers, ce qui implique consultation et modification.

Les classes dans le Framework .Net

Le Framework .net possède toutes les classes permettant la manipulation des fichiers. Nous allons voir rapidement quelles sont ces classes à notre disposition et quelles sont leur utilité.

Avant de commencer à utiliser les classes, il vous faut ajouter le namespace System.IO dans les classes où vous souhaitez manipuler des fichiers. System.IO permet la lecture et l'écriture de fichiers et de flux de données. Pour cela il faut ajouter cette ligne de code :

using System.IO;

Lecture et écriture de fichiers texte

Pour notre tutoriel, nous avons quatre classes à notre disposition.

La classe File et FileInfo : ces deux classes présentent des méthodes similaires à une différence près : elles sont statiques pour la classe File et d'instance pour FileInfo.
Donc si vous souhaitez utiliser la classe FileInfo, il faudra d'abord créer une instance de cette dernière avant de pouvoir employer ses méthodes, ce qui n'est pas le cas pour File.
Nous allons également utiliser deux autres classes de l'espace de noms System.IO :

  • StreamReader permet, en effet, de lire un flux de caractères depuis un fichier
  • StreamWriter permet l’écriture de flux de caractères dans un fichier

Lecture d’un fichier

Dans notre exemple ci-dessous, nous ouvrons un flux à l’aide d’un StreamReader.

Pour charger le fichier dans votre StreamReader, lorsque vous instanciez votre objet vous devez préciser dans le constructeur le fichier avec son chemin complet sur le disque. Pour récupérer l’emplacement de votre application sur le server, utiliser Server.MapPath(pathFichier) avec en paramètre le chemin relatif de votre fichier.

Ensuite pour lire chaque ligne de notre flux, nous utiliserons la méthode ReadLine() de notre classe StreamReader.

Enfin, il est très important de bien fermer votre StreamReader à la fin de votre code, car celui-ci bloque l’accès à la ressource ouverte.

Exemple :

public void lireUnFichier(string pathFichier)
{
try
{
// Création d'une instance de StreamReader pour permettre la lecture de notre fichier
StreamReader monStreamReader = new StreamReader(Server.MapPath(pathFichier));
string ligne = monStreamReader.ReadLine();

// Lecture de toutes les lignes et affichage de chacune sur la page
while (ligne != null)
{
Response.Write(ligne);
Response.Write("");
ligne = monStreamReader.ReadLine();
}

// Fermeture du StreamReader, très important pour libérer la ressource
monStreamReader.Close();
}
catch (Exception ex)
{
// Code exécuté en cas d'exception
Response.Write("Une erreur est survenue lors de la lecture du fichier : ");
Response.Write("");
Response.Write(ex.Message);
}
}

 

L'écriture d’un fichier

Le fonctionnement est très similaire à la lecture d’un flux, il suffit de remplacer la classe StreamReader pour la classe StreamWriter.

Ensuite au lieu d’appeler la méthode ReadLine(), nous allons appeler la méthode WriteLine() nous permettant d’écrire dans le flux.

Enfin, il est très important de bien fermer votre StreamWriter à la fin de votre code, car celui-ci bloque l’accès à la ressource ouverte.

Exemple :

public void ecritureUnFichier (string nomFichier)
{
try
{
// Création d’un objet de type StreamWriter avec passage du nom du fichier dans le contructeur
StreamWriter monStreamWriter = new StreamWriter(Server.MapPath("./") + @"mesfichier /" + nomFichier);

//Ecriture du texte dans notre fichier
monStreamWriter.WriteLine("Tutoriel .net");
monStreamWriter.WriteLine("Ecriture dans un fichier texte.");
monStreamWriter.WriteLine("Fin du fichier texte.");

// Fermeture du StreamWriter, très important pour libérer la ressource
monStreamWriter.Close();
}
catch (Exception ex)
{
// Code exécuté en cas d'exception
Response.Write("Une erreur est survenue lors de l’écriture du fichier : ");
Response.Write(ex.Message);
}
}

 

Récupérer des informations sur un fichier

Il est parfois intéressant d’en savoir plus sur un fichier comme la date de création, la date de modification, la date de dernier accès ou encore l’extension du fichier.

Pour récupérer les informations nous allons utiliser la classe FileInfo.

Exemple de récupération de la date de création du fichier :

FileInfo infoFichier = new FileInfo(Server.MapPath("oseox.txt"));
string dateCreationFichier = mon infoFichier.CreationTime.ToLongDateString();
Response.Write(dateCreationFichier);
Exemple de récupération de la date de modification du fichier :
FileInfo infoFichier = new FileInfo(Server.MapPath("oseox.txt"));
string dateModificationFichier = mon infoFichier.LastWriteTime.ToLongDateString();
Response.Write(dateModificationFichier);
Exemple de récupération de la date du dernier accès au fichier :
FileInfo infoFichier = new FileInfo(Server.MapPath("oseox.txt"));
string dateAccessFichier = mon infoFichier.LastAccessTime.ToLongDateString();
Response.Write(dateAccessFichier);
Exemple de récupération de l’extension du fichier :
FileInfo infoFichier = new FileInfo(Server.MapPath("oseox.txt"));
string extensionFichier = mon infoFichier.Extension.ToString ();
Response.Write(extensionFichier);

 

A propos de l'auteur

Sébastien Houzet

Sébastien Houzet est un passionné d'internet depuis 1998. Il peut vous accompagner sur les projets Web.