FileRead

Leitura de dados de um arquivo de qualquer tipo.

uint FileRead(
 int file_handle, // Handle do arquivo
 ... // Lista de parâmetros para leitura
 );

Parâmetros

file_handle

[in] Descritor de arquivo retornado por FileOpen().

...

[in] Lista de parâmetros separados por vírgulas para leitura do arquivo. Cada parâmetro é passado por referência. O número de parâmetros não deve exceder 256. As variáveis devem ser de tipos básicos; arrays, estruturas, matrizes e vetores não são permitidos.

Valor de Retorno

Número de variáveis lidas. Se forem lidas menos variáveis do que o esperado, o erro de leitura pode ser analisado usando GetLastError(). Se o fim de uma linha for encontrado durante a leitura de um arquivo CSV, a leitura será interrompida, mas nenhum erro será gerado.

Observação

FileRead espelha a função FileWrite. A função é universal e lê arquivos de qualquer tipo: CSV, TXT ou BIN.

FileRead não pode ler dados do tipo string de um arquivo binário, porque o comprimento da string a ser lida não é conhecido previamente.

Ao ler de um arquivo binário, o número de bytes correspondente ao tipo de dado é lido em cada variável (char - 1, int - 4, long - 8, double - 8, etc).

Ao ler de um arquivo de texto, a linha inteira é lida para uma variável do tipo string até o seu fim, sem os caracteres finais de fim de linha.

Ao ler de um arquivo CSV, primeiro são lidas strings contendo a representação textual do tipo correspondente e, em seguida, a string é convertida em uma variável do tipo correspondente (para exemplos, consulte FileReadNumber, FileReadBool, FileReadDateTime).

Exemplo:

//+------------------------------------------------------------------+
//|                                                 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 variáveis de tipos diferentes
   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 um arquivo CSV para escrita
   int file_handle=FileOpen("test.csv",FILE_CSV|FILE_WRITE|FILE_ANSI);
//--- gravar 13 variáveis de tipos diferentes
   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;
//--- gravar 13 variáveis na segunda linha do arquivo 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;
//--- gravar 13 variáveis na terceira linha do arquivo 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 o arquivo CSV gravado para leitura
   file_handle=FileOpen("test.csv",FILE_CSV|FILE_READ|FILE_ANSI);
//--- tentar ler 1 variável a mais do que existe na linha
   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 o arquivo gravado como arquivo de texto
   file_handle=FileOpen("test.csv",FILE_TXT|FILE_READ|FILE_ANSI);
//--- ler 3 linhas do arquivo de texto
   read=FileRead(file_handle,txt_line1,txt_line2,txt_line3);
   Print("\nread ",read," lines");
   FileClose(file_handle);
//--- verificar visualmente que estas são as mesmas linhas que foram gravadas
   Print(txt_line1);
   Print(txt_line2);
   Print(txt_line3);
//--- abrir um arquivo binário para escrita
   file_handle=FileOpen("test.bin",FILE_BIN|FILE_WRITE);
//--- gravar 12 variáveis de tipos diferentes, exceto 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 o arquivo binário gravado para leitura
   file_handle=FileOpen("test.bin",FILE_BIN|FILE_READ);
//--- ler 12 variáveis dos mesmos 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");
//--- verificar visualmente que os dados foram lidos corretamente
   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);
  }

Saída no diário 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)

Veja também

FileWrite, FileReadNumber, FileReadBool, FileReadDateTime