FileRead

Lecture des données depuis un fichier de tout type.

uint FileRead(
 int file_handle, // Handle de fichier
 ... // Liste des paramètres à lire
 );

Paramètres

file_handle

[in] Descripteur de fichier retourné par FileOpen().

...

[in] Liste de paramètres séparés par des virgules à lire depuis le fichier. Chaque paramètre est passé par référence. Le nombre de paramètres ne doit pas dépasser 256. Les variables doivent être de types de base ; les tableaux, structures, matrices et vecteurs ne sont pas autorisés.

Valeur de retour

Nombre de variables lues. Si le nombre de variables lues est inférieur à celui attendu, l'erreur de lecture peut être analysée avec GetLastError(). Si une fin de ligne est rencontrée lors de la lecture d'un fichier CSV, la lecture est interrompue, mais aucune erreur n'est générée.

Remarque

FileRead est le pendant de la fonction FileWrite. La fonction est universelle et lit des fichiers de tout type : CSV, TXT ou BIN.

FileRead ne peut pas lire des données de type string depuis un fichier binaire, car la longueur de la chaîne à lire n'est pas connue à l'avance.

Lors de la lecture depuis un fichier binaire, le nombre d'octets correspondant au type de données est lu dans chaque variable (char - 1, int - 4, long - 8, double - 8, etc.).

Lors de la lecture depuis un fichier texte, la ligne entière est lue dans une variable de type string jusqu'à sa fin, sans les caractères de fin de ligne.

Lors de la lecture depuis un fichier CSV, les chaînes contenant la représentation textuelle du type correspondant sont d'abord lues, puis la chaîne est convertie en variable du type correspondant (pour des exemples, voir FileReadNumber, FileReadBool, FileReadDateTime).

Exemple:

//+------------------------------------------------------------------+
//|                                                 TestFileRead.mq5 |
//|                                  Copyright 2026, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2026, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   uint     written,read;
//--- 13 variables de types différents
   bool     bool_value=true;
   char     char_value=123;
   short    short_value=12345;  
   int      int_value=1234567;
   long     long_value=5000000000;
   float    float_value=FLT_EPSILON;
   double   double_value=M_PI;
   color    color1_value=clrAquamarine;
   color    color2_value=C'111,0,222';
   datetime datetime_value=TimeCurrent();
   complex  complex_value=1.1+0.1i;
   complexf complexf_value=5.5+0.5i;
   string   string_value="the quick brown fox jumps over the lazy dog";
//--- ouvrir un fichier CSV en écriture
   int file_handle=FileOpen("test.csv",FILE_CSV|FILE_WRITE|FILE_ANSI);
//--- écrire 13 variables de types différents
   written=FileWrite(file_handle,bool_value,char_value,short_value,int_value,long_value,float_value,double_value,color1_value,color2_value,datetime_value,string_value,complex_value,complexf_value);
   bool_value=false;
   char_value=124;
   short_value=12347;  
   int_value=1234569;
   long_value=5001000000;
//--- écrire 13 variables dans la deuxième ligne du fichier CSV
   written+=FileWrite(file_handle,bool_value,char_value,short_value,int_value,long_value,float_value,double_value,color1_value,color2_value,datetime_value,string_value,complex_value,complexf_value);
   bool_value=false;
   char_value=125;
   short_value=12349;  
   int_value=1234571;
   long_value=5002000000;
//--- écrire 13 variables dans la troisième ligne du fichier CSV
   written+=FileWrite(file_handle,bool_value,char_value,short_value,int_value,long_value,float_value,double_value,color1_value,color2_value,datetime_value,string_value,complex_value,complexf_value);
   FileClose(file_handle);
   Print(written," bytes written");
   bool     bool_value2;
   char     char_value2;
   short    short_value2;  
   int      int_value2;
   long     long_value2;
   float    float_value2;
   double   double_value2;
   color    color1_value2;
   color    color2_value2;
   datetime datetime_value2;
   complex  complex_value2;
   complexf complexf_value2;
   string   string_value2;
   string   string2_value="untouched string";
//--- ouvrir le fichier CSV écrit en lecture
   file_handle=FileOpen("test.csv",FILE_CSV|FILE_READ|FILE_ANSI);
//--- essayer de lire 1 variable de plus qu'il n'y en a dans la ligne
   read=FileRead(file_handle,bool_value2,char_value2,short_value2,int_value2,long_value2,float_value2,double_value2,color1_value2,color2_value2,datetime_value2,string_value2,complex_value2,complexf_value2,string2_value);
   FileClose(file_handle);
   Print("read ",read," variables");
   Print(bool_value2," ",char_value2," ",short_value2," ",int_value2," ",long_value2," ",float_value2," ",double_value2," ",color1_value2," ",color2_value2," ",datetime_value2," ",string_value2," ",complex_value2," ",complexf_value2," ",string2_value);
   string txt_line1,txt_line2,txt_line3;
//--- ouvrir le fichier écrit comme fichier texte
   file_handle=FileOpen("test.csv",FILE_TXT|FILE_READ|FILE_ANSI);
//--- lire 3 lignes depuis le fichier texte
   read=FileRead(file_handle,txt_line1,txt_line2,txt_line3);
   Print("\nread ",read," lines");
   FileClose(file_handle);
//--- vérifier visuellement qu'il s'agit bien des lignes écrites
   Print(txt_line1);
   Print(txt_line2);
   Print(txt_line3);
//--- ouvrir un fichier binaire en écriture
   file_handle=FileOpen("test.bin",FILE_BIN|FILE_WRITE);
//--- écrire 12 variables de types différents, sauf string
   written=FileWrite(file_handle,bool_value,char_value,short_value,int_value,long_value,float_value,double_value,color1_value,color2_value,datetime_value,complex_value,complexf_value);
   FileClose(file_handle);
   Print("");
   Print(written," bytes written");
   bool     bool_value3;
   char     char_value3;
   short    short_value3;  
   int      int_value3;
   long     long_value3;
   float    float_value3;
   double   double_value3;
   color    color1_value3;
   color    color3_value3;
   datetime datetime_value3;
   complex  complex_value3;
   complexf complexf_value3;
//--- ouvrir le fichier binaire écrit en lecture
   file_handle=FileOpen("test.bin",FILE_BIN|FILE_READ);
//--- lire 12 variables des mêmes types
   read=FileRead(file_handle,bool_value3,char_value3,short_value3,int_value3,long_value3,float_value3,double_value3,color1_value3,color3_value3,datetime_value3,complex_value3,complexf_value3);
   FileClose(file_handle);
   Print("read ",read," variables");
//--- vérifier visuellement que les données ont été lues correctement
   Print(bool_value3," ",char_value3," ",short_value3," ",int_value3," ",long_value3," ",float_value3," ",double_value3," ",color1_value3," ",color3_value3," ",datetime_value3," ",complex_value3," ",complexf_value3);
  }

Sortie dans le journal Experts

554 bytes written
read 13 variables
true 123 12345 1234567 5000000000 1.1920928955078125e-07 3.141592653589793 clrAquamarine 111,0,222 2026.09.25 14:44:25 the quick brown fox jumps over the lazy dog (1.1,0.1) (5.5,0.5) untouched string
 
read 3 lines
true 123 12345 1234567 5000000000 1.1920928955078125e-07 3.141592653589793 clrAquamarine 111,0,222 2026.09.25 14:44:25 the quick brown fox jumps over the lazy dog (1.1,0.1) (5.5,0.5)
false 124 12347 1234569 5001000000 1.1920928955078125e-07 3.141592653589793 clrAquamarine 111,0,222 2026.09.25 14:44:25 the quick brown fox jumps over the lazy dog (1.1,0.1) (5.5,0.5)
false 125 12349 1234571 5002000000 1.1920928955078125e-07 3.141592653589793 clrAquamarine 111,0,222 2026.09.25 14:44:25 the quick brown fox jumps over the lazy dog (1.1,0.1) (5.5,0.5)
 
68 bytes written
read 12 variables
false 125 12349 1234571 5002000000 1.1920928955078125e-07 3.141592653589793 clrAquamarine 111,0,222 2026.09.25 14:44:25 (1.1,0.1) (5.5,0.5)

Voir aussi

FileWrite, FileReadNumber, FileReadBool, FileReadDateTime