【MQL4定数】ファイル情報取得定数:Integer型(ENUM_FILE_PROPERTY_INTEGER)

【辞書】MQLリファレンス

ファイル情報取得定数:Integer型(ENUM_FILE_PROPERTY_INTEGER)

ファイル情報取得定数:Integer型(ENUM_FILE_PROPERTY_INTEGER)は、読み込んだファイルの情報を取得するための定数です。

ファイルサイズや更新日などを取得することができるようになります。

ファイル情報取得定数:Integer型を使うには、以下の関数を使います。

  • FileGetInteger関数:ファイルの情報を取得する関数

ファイル情報取得定数:Integer型(ENUM_FILE_PROPERTY_INTEGER)

定数説明
FILE_EXISTSファイルの存在確認
FILE_CREATE_DATE作成日
FILE_MODIFY_DATE更新日
FILE_ACCESS_DATE最終アクセス日
FILE_SIZEファイルサイズ(バイト単位)
FILE_POSITIONファイルのポインタ位置
FILE_ENDファイルの終わり記号を取得
FILE_LINE_END行の終わり記号を取得
FILE_IS_COMMONファイルは共有フォルダで開かれている(FILE_COMMON参照)
FILE_IS_TEXTファイルはテキスト形式(FILE_TXT参照)
FILE_IS_BINARYファイルはバイナリ形式(FILE_BIN参照)
FILE_IS_CSVファイルはCSV形式(FILE_CSV参照)
FILE_IS_ANSIファイルはANSI形式(FILE_ANSI参照)
FILE_IS_READABLEファイルは読み取り可能(FILE_READ参照)
FILE_IS_WRITABLEファイルは書き込み可能(FILE_WRITE参照)

ファイル情報取得定数:Integer型の使い方

主に、FileGetInteger関数で使用されます。

FileGetInteger関数の第2引数(property_id)として、ファイル情報取得定数:Integer型が使用されます。

例えば、以下のように使用します。

void OnInit()
  {
   //ファイルパスを指定
   string path = "folder/data.csv";

   //ファイルを読み込み可能・CSV形式で読み込む
   int handle = FileOpen(path,FILE_READ|FILE_CSV);
   
   //ファイルの読み込みエラーチェック
   if(handle != INVALID_HANDLE)
     {
      //読み込んだファイルのサイズを取得
      long fileInfo = FileGetInteger(handle,FILE_SIZE);

      //ファイルサイズを表示
      Print(fileInfo);

      //ファイルを閉じる
      FileClose(handle);
     }
  }

サンプルプログラム

以下は、ファイル情報取得定数:Integer型の各定数を使って、ファイルの各種情報を取得・表示するサンプルプログラムです。

//+------------------------------------------------------------------+
//| ファイル情報取得定数:Integer型 サンプルプログラム               |
//+------------------------------------------------------------------+
void OnInit()
  {
   //ファイルパスを指定
   string path = "test_data.csv";

   //テスト用ファイルを作成して書き込む
   int writeHandle = FileOpen(path, FILE_WRITE | FILE_CSV);
   if(writeHandle != INVALID_HANDLE)
     {
      FileWrite(writeHandle, "Date", "Open", "High", "Low", "Close");
      FileWrite(writeHandle, "2024.01.01", "1.1000", "1.1050", "1.0950", "1.1020");
      FileWrite(writeHandle, "2024.01.02", "1.1020", "1.1080", "1.0990", "1.1060");
      FileClose(writeHandle);
      Print("テスト用ファイルを作成しました");
     }

   //ファイルを読み込み可能・CSV形式で開く
   int handle = FileOpen(path, FILE_READ | FILE_CSV);

   //ファイルの読み込みエラーチェック
   if(handle != INVALID_HANDLE)
     {
      //--- FILE_EXISTS:ファイルの存在確認
      long fileExists = FileGetInteger(handle, FILE_EXISTS);
      Print("FILE_EXISTS(ファイル存在確認): ", fileExists);

      //--- FILE_CREATE_DATE:作成日
      long createDate = FileGetInteger(handle, FILE_CREATE_DATE);
      Print("FILE_CREATE_DATE(作成日): ", TimeToStr((datetime)createDate, TIME_DATE | TIME_SECONDS));

      //--- FILE_MODIFY_DATE:更新日
      long modifyDate = FileGetInteger(handle, FILE_MODIFY_DATE);
      Print("FILE_MODIFY_DATE(更新日): ", TimeToStr((datetime)modifyDate, TIME_DATE | TIME_SECONDS));

      //--- FILE_ACCESS_DATE:最終アクセス日
      long accessDate = FileGetInteger(handle, FILE_ACCESS_DATE);
      Print("FILE_ACCESS_DATE(最終アクセス日): ", TimeToStr((datetime)accessDate, TIME_DATE | TIME_SECONDS));

      //--- FILE_SIZE:ファイルサイズ(バイト単位)
      long fileSize = FileGetInteger(handle, FILE_SIZE);
      Print("FILE_SIZE(ファイルサイズ): ", fileSize, " バイト");

      //--- FILE_POSITION:ファイルのポインタ位置
      long filePosition = FileGetInteger(handle, FILE_POSITION);
      Print("FILE_POSITION(ポインタ位置): ", filePosition);

      //--- FILE_END:ファイルの終わり記号を取得
      long fileEnd = FileGetInteger(handle, FILE_END);
      Print("FILE_END(ファイル終端か): ", fileEnd);

      //--- FILE_LINE_END:行の終わり記号を取得
      long fileLineEnd = FileGetInteger(handle, FILE_LINE_END);
      Print("FILE_LINE_END(行終端か): ", fileLineEnd);

      //--- FILE_IS_COMMON:共有フォルダで開かれているか
      long fileIsCommon = FileGetInteger(handle, FILE_IS_COMMON);
      Print("FILE_IS_COMMON(共有フォルダか): ", fileIsCommon);

      //--- FILE_IS_TEXT:テキスト形式か
      long fileIsText = FileGetInteger(handle, FILE_IS_TEXT);
      Print("FILE_IS_TEXT(テキスト形式か): ", fileIsText);

      //--- FILE_IS_BINARY:バイナリ形式か
      long fileIsBinary = FileGetInteger(handle, FILE_IS_BINARY);
      Print("FILE_IS_BINARY(バイナリ形式か): ", fileIsBinary);

      //--- FILE_IS_CSV:CSV形式か
      long fileIsCsv = FileGetInteger(handle, FILE_IS_CSV);
      Print("FILE_IS_CSV(CSV形式か): ", fileIsCsv);

      //--- FILE_IS_ANSI:ANSI形式か
      long fileIsAnsi = FileGetInteger(handle, FILE_IS_ANSI);
      Print("FILE_IS_ANSI(ANSI形式か): ", fileIsAnsi);

      //--- FILE_IS_READABLE:読み取り可能か
      long fileIsReadable = FileGetInteger(handle, FILE_IS_READABLE);
      Print("FILE_IS_READABLE(読み取り可能か): ", fileIsReadable);

      //--- FILE_IS_WRITABLE:書き込み可能か
      long fileIsWritable = FileGetInteger(handle, FILE_IS_WRITABLE);
      Print("FILE_IS_WRITABLE(書き込み可能か): ", fileIsWritable);

      //ファイルを閉じる
      FileClose(handle);
      Print("ファイルを閉じました");
     }
   else
     {
      Print("ファイルの読み込みに失敗しました。エラーコード: ", GetLastError());
     }
  }

このサンプルでは、まずテスト用のCSVファイルを作成し、その後ファイルを読み込みモードで開いて、すべてのENUM_FILE_PROPERTY_INTEGER定数を使用してファイル情報を取得・表示しています。

【補足】ファイル情報取得定数:Integer型の列挙型(ENUM_FILE_PROPERTY_INTEGER)

ファイル情報取得定数:Integer型は、ENUM_FILE_PROPERTY_INTEGER​という列挙型に含まれています。

列挙型は、定数群をひとまとめにしたものです。

以下のように使います。

ENUM_FILE_PROPERTY_INTEGER filePropertyInteger = FILE_SIZE;

上記のようにプログラムすると、filePropertyInteger変数に FILE_SIZEの値が代入されます。