FileRead

Lectura de datos desde un archivo de cualquier tipo.

uint FileRead(
 int file_handle, // Handle del archivo
 ... // Lista de parámetros para leer
 );

Parámetros

file_handle

[in] Descriptor de archivo devuelto por FileOpen().

...

[in] Lista de parámetros separados por comas para leer desde el archivo. Cada parámetro se pasa por referencia. El número de parámetros no debe superar 256. Las variables deben ser de tipos básicos; no se permiten arrays, estructuras, matrices ni vectores.

Valor de retorno

Número de variables leídas. Si se han leído menos variables de las esperadas, el error de lectura puede analizarse mediante GetLastError(). Si durante la lectura de un archivo CSV se encuentra el final de una línea, la lectura se interrumpe, pero no se genera ningún error.

Nota

FileRead es la función simétrica de FileWrite. La función es universal y lee desde archivos de cualquier tipo: CSV, TXT o BIN.

FileRead no puede leer datos de tipo string desde un archivo binario, porque la longitud de la cadena que se va a leer se desconoce de antemano.

Al leer desde un archivo binario, en cada variable se lee el número de bytes correspondiente al tipo de dato (char - 1, int - 4, long - 8, double - 8, etc.).

Al leer desde un archivo de texto, toda la línea se lee en una variable de tipo string hasta su final, sin los caracteres finales de fin de línea.

Al leer desde un archivo CSV, primero se leen las cadenas que contienen la representación textual del tipo correspondiente y luego la cadena se convierte en una variable del tipo correspondiente (para ejemplos, véase FileReadNumber, FileReadBool, FileReadDateTime).

Ejemplo:

//+------------------------------------------------------------------+
//|                                                 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 distintos tipos
   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";
//--- abrir un archivo CSV para escritura
   int file_handle=FileOpen("test.csv",FILE_CSV|FILE_WRITE|FILE_ANSI);
//--- escribir 13 variables de distintos tipos
   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;
//--- escribir 13 variables en la segunda línea del archivo 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;
//--- escribir 13 variables en la tercera línea del archivo 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";
//--- abrir el archivo CSV escrito para lectura
   file_handle=FileOpen("test.csv",FILE_CSV|FILE_READ|FILE_ANSI);
//--- intentar leer 1 variable más de las que hay en la línea
   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;
//--- abrir el archivo escrito como archivo de texto
   file_handle=FileOpen("test.csv",FILE_TXT|FILE_READ|FILE_ANSI);
//--- leer 3 líneas del archivo de texto
   read=FileRead(file_handle,txt_line1,txt_line2,txt_line3);
   Print("\nread ",read," lines");
   FileClose(file_handle);
//--- comprobar visualmente que son las mismas líneas que se escribieron
   Print(txt_line1);
   Print(txt_line2);
   Print(txt_line3);
//--- abrir un archivo binario para escritura
   file_handle=FileOpen("test.bin",FILE_BIN|FILE_WRITE);
//--- escribir 12 variables de distintos tipos, excepto 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;
//--- abrir el archivo binario escrito para lectura
   file_handle=FileOpen("test.bin",FILE_BIN|FILE_READ);
//--- leer 12 variables de los mismos tipos
   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");
//--- comprobar visualmente que los datos se han leído correctamente
   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);
  }

Salida en el diario de Expertos

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)

Véase también

FileWrite, FileReadNumber, FileReadBool, FileReadDateTime