Rubrique précédente: OpenPipe – Ouvrir un canalRubrique suivante: SeekFile : Modifier la position actuelle dans un fichier ouvert


ReadFile : Lire des données à partir d'un fichier

Valide sur les plates-formes NetWare, Symbian OS, UNIX, Windows et Windows CE

La fonction ReadFile lit les données à partir d'un fichier.

La fonction de contenu de fichier présente l'un des formats suivants :

ReadFile (handle as Integer, buffer as String) as Boolean
ReadFile (handle as Integer, buffer as String, buflen as Integer) as Boolean
ReadFile (handle as Integer, buffer as Void) as Boolean
ReadFile (handle as Integer, buffer as Void, buflen as Integer) as Boolean
descripteur

Identifie le descripteur de fichier renvoyé par l'appel précédent d'OpenFile ou de CreateFile.

mémoire tampon

Indique une variable d'un type quelconque.

Les tampons de type tableaux de caractères sont traités comme des chaînes.

Si l'argument buffer est une variable Chaîne, la fonction effectue la lecture à partir de la position actuelle dans le fichier et s'arrête lorsqu'elle lit un caractère de nouvelle ligne ou lorsque le nombre maximum de caractères a été atteint. Si l'argument buffer est d'un autre type, la fonction effectue la lecture à partir de la position actuelle dans le fichier et s'arrête lorsque le tampon est plein ou que le pointeur de fichier atteint la fin du fichier.

Void signifie que le type d'objet peut être tout type autorisé, à l'exception d'une chaîne ou d'un tableau de caractères.

buflen

Indique le nombre d'octets à lire depuis le fichier dans le tampon. Si le fichier a des octets insuffisants, tous les octets restants sont transmis dans le tampon.

En cas de réussite, la fonction renvoie TRUE (Vrai), sinon elle renvoie FALSE (Faux).

Remarque : Ne mélangez pas les différents formats de la fonction ReadFile(), car cela peut donner des résultats inattendus.

Contrairement aux autres formats, le premier format lit la chaîne sous forme de ligne de texte terminée par un signe nouvelle ligne ou fin de fichier, et stocke les informations dans le tampon sans le signe nouvelle ligne. L'interpréteur mappe cette fonction vers une fonction différente de lecture système que les trois autres formats. Les autres formats ReadFile sont mappes vers une fonction de lecture système commune.

Les autres fonctions de lecture système peuvent également utiliser des caches et des pointeurs de lecture différents pour extraire les données. Si les formats sont mélangés, les données risquent de ne pas être lues dans l'ordre dans lequel elles ont été stockées sur le disque.

Dans le cas du premier format, la chaîne lue est une ligne de texte qui se termine par un signe de nouvelle ligne ou de fin de fichier. Les informations sont stockées dans le tampon sans cette nouvelle ligne. Ceci n'est pas valable pour les autres fonctions ReadFile.

En outre, l'interpréteur mappe cette fonction vers une autre fonction de lecture système que celle des trois autres formats qui ont été associés à une fonction de lecture système commune. Les autres fonctions de lecture système peuvent également utiliser des caches et des pointeurs de lecture différents pour extraire les données. Si les formats sont mélangés, les données risquent de ne pas être lues dans l'ordre dans lequel elles ont été stockées sur le disque.

Exemple :

Dim fIn, fOut as integer   ' Déclarez les descripteurs de fichier
Dim OneLine as string     ' Chaîne devant tenir sur une ligne

Rem Ouvrez d'abord le fichier d'entrée...

fIn=OpenFile("C:\CONFIG.SYS",O_READ)
if fIn<0 then
	MessageBox("Impossible d'ouvrir le fichier d'entrée","Erreur")
	Goto End
End if

Rem ...Ensuite, créez le fichier de sortie...

fOut=CreateFile("C:\CONFIG.BAK")
if fOut<0 then
	MessageBox("Impossible de créer le fichier de sortie","Erreur")

CloseFile(fIn)
	Goto End
End if

Rem ...Copiez les lignes jusqu'à ce qu'il n'en reste plus...

while Not(Eof(fIn))
	if ReadFile(fIn,OneLine) then WriteFile(fOut,OneLine)
wend

Rem ...Refermez les fichiers et indiquez la réussite de l'opération.

CloseFile(fIn)
CloseFile(fOut)
MsgBox("Une copie de sauvegarde du fichier CONFIG.SYS a été créée","MonScript",MB_OK)

end: