Utilisation de flux de fichiers

De Appmethod Topics
Aller à : navigation, rechercher

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.

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.

  constructor Create(const filename: string; Mode: Word);
  __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ée un fichier avec le nom donné. S'il existe déjà un fichier portant ce nom, TFileStream ouvre 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.

Voir aussi