FileRead

任意の種類のファイルからデータを読み取ります。

uint FileRead(
int file_handle, // ファイルハンドル
... // 読み取るパラメータのリスト
);

パラメータ

file_handle

[in] FileOpen().

...

[in] ファイルから読み取るパラメータをカンマで区切ったリストです。各パラメータは参照渡しされます。パラメータの数は 256 を超えてはいけません。変数は基本型でなければならず、配列、構造体、行列、ベクトルは使用できません。

戻り値

読み取られた変数の数。想定より少ない変数しか読み取られなかった場合は、GetLastError() を使用して読み取りエラーを分析できます。CSV ファイルの読み取り中に行末に到達すると読み取りは中断されますが、エラーは発生しません。

注意

FileRead は FileWrite 関数に対応します。この関数は汎用で、CSV、TXT、BIN の任意の種類のファイルから読み取ります。

FileRead は、読み取る文字列の長さが事前に不明なため、バイナリファイルから string 型のデータを読み取ることはできません。

バイナリファイルから読み取る場合、各変数にはデータ型に対応するバイト数が読み取られます(char - 1、int - 4、long - 8、double - 8 など)。

テキストファイルから読み取る場合、行全体が string 型の変数に行末まで読み取られますが、終端の改行文字は含まれません。

CSV ファイルから読み取る場合、まず対応する型のテキスト表現を含む文字列が読み取られ、その後その文字列が変換されて対応する型の変数になります(例については FileReadNumber, FileReadBool, FileReadDateTime).

例:

//+------------------------------------------------------------------+
//|                                                 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 個の変数
  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";
//--- 書き込み用に CSV ファイルを開く
  int file_handle=FileOpen("test.csv",FILE_CSV|FILE_WRITE|FILE_ANSI);
//--- 異なる型の 13 個の変数を書き込む
  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;
//--- CSV ファイルの 2 行目に 13 個の変数を書き込む
  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;
//--- CSV ファイルの 3 行目に 13 個の変数を書き込む
  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";
//--- 書き込まれた CSV ファイルを読み取り用に開く
  file_handle=FileOpen("test.csv",FILE_CSV|FILE_READ|FILE_ANSI);
//--- 行に存在する数より 1 個多く変数を読み取ってみる
  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;
//--- 書き込まれたファイルをテキストファイルとして開く
  file_handle=FileOpen("test.csv",FILE_TXT|FILE_READ|FILE_ANSI);
//--- テキストファイルから 3 行を読み取る
  read=FileRead(file_handle,txt_line1,txt_line2,txt_line3);
  Print("\nread ",read," lines");
  FileClose(file_handle);
//--- 書き込まれた行と同じであることを目視で確認する
  Print(txt_line1);
  Print(txt_line2);
  Print(txt_line3);
//--- 書き込み用にバイナリファイルを開く
  file_handle=FileOpen("test.bin",FILE_BIN|FILE_WRITE);
//--- string を除く異なる型の 12 個の変数を書き込む
  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;
//--- 書き込まれたバイナリファイルを読み取り用に開く
  file_handle=FileOpen("test.bin",FILE_BIN|FILE_READ);
//--- 同じ型の 12 個の変数を読み取る
  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");
//--- データが正しく読み取られたことを目視で確認する
  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);
 }

エキスパートログの出力

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)

参照

FileWrite, FileReadNumber, FileReadBool, FileReadDateTime