IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Sommaire > Fichiers
        Comment lire et écrire dans un fichier texte ?
        Comment lire et écrire dans un fichier binaire ?
        Comment surveiller les modifications d'un fichier grâce aux notifications système?
        Comment récupérer le nom d'un fichier, lorsque j'ai le chemin complet ?
        Comment obtenir les attributs d'un fichier ou d'un répertoire?
        Comment créer, copier, déplacer, supprimer un fichier ?
        Comment obtenir la liste des fichiers et des sous-répertoires d'un répertoire ?
        Comment afficher ou écrire correctement les caractères accentués dans mes fichiers ?

        


Comment lire et écrire dans un fichier texte ?
auteurs : abelman, bodbod
Nous allons ouvrir un fichier texte et le remplir s'il n'existe pas encore.
Nous afficherons ensuite son contenu à l'écran.
On utiliser pour cela les classes System.IO.StreamReader pour la lecture et System.IO.StreamWriter pour l'écriture

using System; using System.IO procedure TWinForm.FichierTexte(nomFichier : String ); var sr : StreamReader ; sw : StreamWriter ; line : String ; begin sr := nil; sw := nil; try begin if not &File.Exists(nomFichier) then begin // Le fichier n'existe pas. On le crée. sw := StreamWriter.Create(nomFichier); sw.WriteLine('Bonjour. Nous sommes le {0} et il est {1} ', DateTime.Now.ToLongDateString(), DateTime.Now.ToLongTimeString()); sw.Close(); sw := nil; // Remarque : On peut utiliser sw := File.AppendText(NomFichier) pour ajouter // du texte à un fichier existant end ; // Ouverture du fichier et écriture du contenu du fichier sur la console sr := StreamReader.Create( nomFichier ); Console.WriteLine('Début du fichier'); line := sr.ReadLine(); while line <> nil do begin Console.WriteLine(line); line := sr.ReadLine(); end ; Console.WriteLine( 'Fin du fichier' ); end ; finally begin // Fermeture streamreader if sr <> nil then sr.Close(); // Fermeture streamwriter if sw <> nil then sw.Close(); end ; end ; // try .. finally end ;
lien :  System.IO.StreamWriter
lien :  System.IO.StreamReader

Comment lire et écrire dans un fichier binaire ?
auteurs : abelman, bodbod
Nous allons ouvrir un fichier binaire et le remplir (d'entiers) s'il n'existe pas encore.
Nous afficherons son contenu à l'écran.
On utilise pour cela les classes System.IO.BinaryReader pour la lecture et System.IO.BinaryWriter pour l'écriture.

using System.IO; using System; procedure TWinForm.FichierBinaire(NomFichier : String ) ; var i : Integer ; br : BinaryReader ; bw : BinaryWriter ; fs : FileStream ; begin br := nil; bw := nil; fs := nil; try begin if not &File.Exists(NomFichier) then begin // Le fichier n'existe pas. On le crée bw := BinaryWriter.Create( &File.&Create(NomFichier) ); for i:=0 to 9 do bw.Write(i); bw.Close(); end ; // Ouverture du contenu du fichier et écriture sur la console fs := &File.Open(NomFichier, FileMode.Open); br := BinaryReader.Create(fs); while (fs.Position < fs.Length) do Console.Write(br.ReadInt32()); Console.WriteLine( #13#10 + 'Fin du fichier'); end ; finally begin if br<>nil then br.Close(); if bw<>nil then bw.Close(); end ; end ; end ;
lien :  System.IO.BinaryReader
lien :  System.IO.BinaryWriter

Comment surveiller les modifications d'un fichier grâce aux notifications système?
auteurs : abelman, bodbod
Windows envoie des notifications qui permettent de surveiller les modifications apportées au système de fichier.
Cela se fait de la manière suivante en utilisant la classe System.IO.FileSystemWatcher.

procedure TWinForm.Watch(path : String ; filter : String ) ; var fw : FileSystemWatcher ; begin // On peut utiliser les '*' avec filter // Création de l'objet watcher fw := FileSystemWatcher.Create(path, filter); // On ajoute les handlers pour surveiller les événements qu'on souhaite. Include( fw.Changed , OnChanged ); Include( fw.Renamed , OnRenamed ); Include( fw.Created , OnChanged ); Include( fw.Deleted , OnChanged ); Include( fw.Error , OnError ); // On surveillera aussi les sous répertoires fw.IncludeSubdirectories := true; // Mettre EnableRaisingEvents à true démarre la surveillance des modifications. // Mettre à false l'arrête. fw.EnableRaisingEvents := true; end ; procedure TWinForm.OnChanged( source : &Object ; e : FileSystemEventArgs) ; begin Console.WriteLine('Fichier {0} {1}', e.FullPath, e.ChangeType); end ; procedure TWinForm.OnRenamed( source : &Object ; e : RenamedEventArgs ) ; begin Console.WriteLine('Fichier {0} renommé en {1}', e.OldFullPath, e.FullPath); end ; procedure TWinForm.OnError(source : &Object ; e : ErrorEventArgs) ; var ex : Exception ; begin ex := e.GetException(); Console.WriteLine( '-' + ex.ToString()); end ;
Et voici l'utilisation de la fonction Watch

// Pour surveiller l'activité du répertoire c:\rep Watch( 'c:\rep', '*' );
lien :  System.IO.FileSystemWatcher

Comment récupérer le nom d'un fichier, lorsque j'ai le chemin complet ?
auteurs : morpheus, bodbod
Vous devez utiliser la méthode GetFileName de la classe System.IO.Path qui vous permet de récupérer le nom du fichier.

var filename : String ; name : String ; fileName := 'C:\\toto.txt'; name := System.IO.Path.GetFileName(fileName); Console.WriteLine(name);

Comment obtenir les attributs d'un fichier ou d'un répertoire?
auteurs : abelman, bodbod
On utilise la méthode GetAttributes de la classe System.IO.File

using System.IO; procedure TWinForm.GetFileAttributes( sFilename : String ) ; var flagAttr : FileAttributes ; begin flagAttr := &File.GetAttributes(sFilename); // Date de création Console.WriteLine('Créé le {0} à {1}', &File.GetCreationTime(sFilename).ToShortDateString(), &File.GetCreationTime(sFilename).ToShortTimeString()); // Date de la dernière modification Console.WriteLine('Modifié le {0} à {1}', &File.GetLastWriteTime(sFilename).ToShortDateString(), &File.GetLastWriteTime(sFilename).ToShortTimeString()); // Date du dernier accès Console.WriteLine('Dernier accès le {0} à {1}', &File.GetLastAccessTime(sFilename).ToShortDateString(), &File.GetLastAccessTime(sFilename).ToShortTimeString()); Console.WriteLine('Attributs de {0}', sFilename); // Attribut Archive if ((flagAttr and FileAttributes.Archive) = FileAttributes.Archive) then Console.WriteLine(FileAttributes.Archive); // Attribut Compressé if ((flagAttr and FileAttributes.Compressed) = FileAttributes.Compressed) then Console.WriteLine(FileAttributes.Compressed); // Attribut Device if ((flagAttr and FileAttributes.Device) = FileAttributes.Device) then Console.WriteLine(FileAttributes.Device); if ((flagAttr and FileAttributes.Directory) = FileAttributes.Directory) then Console.WriteLine(FileAttributes.Directory); if ((flagAttr and FileAttributes.Encrypted) = FileAttributes.Encrypted ) then Console.WriteLine(FileAttributes.Encrypted); // Attribut caché if ((flagAttr and FileAttributes.Hidden) = FileAttributes.Hidden) then Console.WriteLine(FileAttributes.Hidden); // Attribut Normal if ((flagAttr and FileAttributes.Normal) = FileAttributes.Normal) then Console.WriteLine(FileAttributes.Normal); // Attibut non indexé if ((flagAttr and FileAttributes.NotContentIndexed) = FileAttributes.NotContentIndexed) then Console.WriteLine(FileAttributes.NotContentIndexed); // Attribut Offline if ((flagAttr and FileAttributes.Offline) = FileAttributes.Offline) then Console.WriteLine(FileAttributes.Offline); // Attribut ReadOnly if ((flagAttr and FileAttributes.ReadOnly) = FileAttributes.ReadOnly) then Console.WriteLine(FileAttributes.ReadOnly); // Attribut ReparsePoint if ((flagAttr and FileAttributes.ReparsePoint) = FileAttributes.ReparsePoint) then Console.WriteLine(FileAttributes.ReparsePoint); // Attribut SparseFile if ((flagAttr and FileAttributes.SparseFile) = FileAttributes.SparseFile) then Console.WriteLine(FileAttributes.SparseFile); // Attribut System if ((flagAttr and FileAttributes.System) = FileAttributes.System) then Console.WriteLine(FileAttributes.System); // Attribut Temporary if ((flagAttr and FileAttributes.Temporary) = FileAttributes.Temporary) then Console.WriteLine(FileAttributes.Temporary); end ;
lien :  System.IO.File

Comment créer, copier, déplacer, supprimer un fichier ?
auteurs : abelman, bodbod
Pour créer, copier, déplacer ou supprimer un fichier, on utilise la classe System.IO.File

using System.IO; using System; {$APPTYPE CONSOLE} procedure TWinForm.FileTests(); var fs : FileStream ; begin try begin //Création d'un fichier vide. fs := System.IO.File.&Create('myfile.txt') ; fs.Close(); Console.WriteLine('fichier myfile.txt créé'); // Copie de fichier &File.Copy('myfile.txt', 'copyofmyfile.txt'); Console.WriteLine('fichier myfile.txt copié vers copyofmyfile.txt'); // Déplacement de fichier &File.Move('copyofmyfile.txt', 'c:\copyofmyfile.txt'); Console.WriteLine('fichier copyofmyfile.txt déplacé vers c:\copyofmyfile.txt'); // Suppression de fichier &File.Delete('c:\copyofmyfile.txt'); Console.WriteLine('Fichier c:\copyofmyfile.txt supprimé'); end except on ex : Exception do begin Console.WriteLine( ex.ToString() ); Console.WriteLine( ex.Message ); end ; end ; end;
lien :  System.IO.File

Comment obtenir la liste des fichiers et des sous-répertoires d'un répertoire ?
auteurs : abelman, bodbod
On utilise la fonction GetFileSystemEntries de la classe System.IO.Directory

using System.IO; using System; procedure TWinForm.Dir( directory : String ) ; var files : array of String ; i , filecount : Integer ; begin // pour avoir les noms des fichiers et sous-répertoires files := System.IO.Directory.GetFileSystemEntries(directory) ; filecount := Length( files ) ; for i:=0 to filecount-1 do Console.WriteLine(files[i]); end ;
Pour avoir juste les noms des fichiers et pas les sous-répertoires d'un répertoire, on utilise System.IO.Directory.GetFiles()

lien :  System.IO.Directory

Comment afficher ou écrire correctement les caractères accentués dans mes fichiers ?
auteurs : morpheus, bodbod
Les fichiers sont ouverts avec l'encodage unicode par défaut dans .NET.
Il en résulte que les caractères accentués par exemple ne s'affichent pas correctement.
Vous devez spécifier le type d'encodage à utiliser, pour la lecture/écriture de votre fichier. Exemple pour la lecture

using System.IO; using System.Text; var strReader : StreamReader ; strReader := System.IO.StreamReader.Create( filename , Encoding.Default );
Ici, on récupère l'encodage courant et on l'applique lors de l'ouverture du fichier par le StreamReader.
On peut faire exactement la même chose avec les StreamWriter


        

Consultez les autres F.A.Q's

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2005 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.