Utilisation de flux de fichiers
Remonter à Utilisation des fichiers
La classe TFileStream permet aux applications de lire et d'écrire dans un fichier sur disque. Puisque TFileStream est un objet flux, il partage les méthodes de flux communes. Vous pouvez utiliser ces méthodes pour lire ou écrire dans le fichier, copier des données à destination ou à partir d'autres classes de flux, et lire ou écrire des valeurs de composants. Voir Utilisation des flux pour obtenir des détails sur les capacités d'héritage des flux de fichiers en étant des classes de flux.
Les flux de fichiers vous permettent en outre d’accéder au handle des fichiers, afin que vous puissiez les utiliser avec les routines de gestion de fichiers globales ayant besoin de ce handle.
Le contenu de cette page s'applique également à la classe TBufferedFileStream, qui ajoute la prise en charge de la mise en tampon à la classe TFileStream et optimise ses performances pour des opérations de lecture et écriture consécutives multiples mineures.
Sommaire
Création et ouverture de fichiers en utilisant des flux de fichiers
Pour créer ou ouvrir un fichier et accéder à son handle, il suffit d’instancier un TFileStream. Cela ouvre ou crée un fichier spécifié, et fournit des méthodes de lecture ou d'écriture sur ce fichier. Si le fichier ne peut pas être ouvert, le constructeur TFileStream déclenche une exception.
Delphi :
constructor Create(const filename: string; Mode: Word);
C++ :
__fastcall TFileStream(const AnsiString FileName, Word Mode);
Le paramètre Mode spécifie comment le fichier doit être ouvert lors de la création du flux de fichier. Le paramètre Mode est constitué d'un mode d'ouverture et d'un mode de partage reliés par un OU logique. Le mode d'ouverture doit prendre l'une des valeurs suivantes :
Modes d'ouverture
Valeur | Signification |
---|---|
fmCreate |
Créez un fichier avec le nom donné. S'il existe déjà un fichier portant ce nom, ouvrez le fichier en mode écriture. |
fmOpenRead |
Ouvre le fichier en lecture seulement. |
fmOpenWrite |
Ouvre le fichier en écriture seulement. L'écriture dans le fichier remplace entièrement le contenu en cours. |
fmOpenReadWrite |
Ouvre le fichier pour modifier le contenu en cours plutôt que de le remplacer. |
Le mode de partage peut prendre l'une des valeurs suivantes, avec les restrictions listées ci-dessous :
Modes de partage
Valeur | Signification |
---|---|
fmShareCompat |
Le partage est compatible avec le mode d'ouverture des FCBs (applications VCL seulement). Pour de plus amples informations sur la structure du bloc de contrôle de fichiers (FCB), voir The FCB Structure dans la bibliothèque MSDN. |
fmShareExclusive |
En aucun cas une autre application ne peut ouvrir le fichier. |
fmShareDenyWrite |
Les autres applications peuvent ouvrir le fichier en lecture, mais pas en écriture. |
fmShareDenyRead |
Les autres applications peuvent ouvrir le fichier en écriture, mais pas en lecture (applications VCL seulement). |
fmShareDenyNone |
Aucune tentative n'est effectuée pour empêcher les autres applications de lire ou d'écrire dans le fichier. |
Sachez que le mode de partage utilisable dépend du mode d'ouverture utilisé. Le tableau suivant montre les modes partagés qui sont disponibles pour chaque mode d'ouverture.
Modes partagés disponibles pour chaque mode d'ouverture
Mode d'ouverture | fmShareCompat (VCL) | fmShareExclusive | fmShareDenyWrite | fmShareDenyRead (VCL) | fmShareDenyNone |
---|---|---|---|---|---|
fmOpenRead |
Non utilisable |
Non utilisable |
Disponible |
Non utilisable |
Disponible |
fmOpenWrite |
Disponible |
Disponible |
Non utilisable |
Disponible |
Disponible |
fmOpenReadWrite |
Disponible |
Disponible |
Disponible |
Disponible |
Disponible |
Les constantes de mode de partage et d'ouverture des fichiers sont définies dans l'unité SysUtils.
Utilisation du handle de fichier
En instanciant TFileStream, vous avez accès au handle de fichier. Le handle de fichier est contenu dans la propriété Handle. Sur Windows, Handle est un handle de fichier Windows. Handle est en lecture seule et reflète le mode dans lequel le fichier a été ouvert. Si vous voulez changer les attributs du handle de fichier, vous devez créer un nouvel objet flux de fichier.
Certaines routines de manipulation de fichiers prennent un handle de fichier en paramètre. Quand vous disposez d'un flux de fichier, vous pouvez utiliser la propriété Handle dans toute situation où vous devez utiliser un handle de fichier. Attention, car à la différence des flux de handles, les flux de fichiers ferment les handles de fichiers quand l'objet est détruit.