FileGetInteger

获得文件的整型属性。该函数有两个变量。

1. 通过文件句柄获得属性。

long  FileGetInteger(
   int                         file_handle,   // 文件句柄
   ENUM_FILE_PROPERTY_INTEGER  property_id    // 属性ID
   );

2. 通过文件名获得属性。

long  FileGetInteger(
   const string                file_name,            // 文件名
   ENUM_FILE_PROPERTY_INTEGER  property_id,          // 属性 ID
   bool                        common_folder=false   // 文件在本地文件夹查看(false)
   );                                                // 或在所有程序端的普通文件夹(true)

参量

file_handle

[in]  通过FileOpen()返回的文件夹说明符。

file_name

[in]  文件名。

property_id

[in]  文件属性ID。该值可以是ENUM_FILE_PROPERTY_INTEGER枚举值的一个。如果使用函数的第二变量,您只能收到以下属性的值:FILE_EXISTS,FILE_CREATE_DATE,FILE_MODIFY_DATE, FILE_ACCESS_DATE 和 FILE_SIZE。

common_folder=false

[in]  文件位置点。如果参数是false,则查看程序端数据文件夹。否则假定文件在所有共享文件夹terminals \Terminal\Common\Files (FILE_COMMON)。

返回值

属性的值。如果错误,则返回-1。要获得错误代码,请使用GetLastError()函数。

如果在通过名称获得属性时指定文件夹,函数无论如何都将有5018错误(ERR_MQL_FILE_IS_DIRECTORY),虽然返回值可能是正确的。

注释

函数经常改变错误代码。如果成功完成,错误代码重置为NULL。

示例:

//--- 启动脚本时显示输入参数的窗口
#property script_show_inputs
//--- 输入参数
input string InpFileName="data.csv";
input string InpDirectoryName="SomeFolder";
//+------------------------------------------------------------------+
//| 脚本程序起始函数                                                   |
//+------------------------------------------------------------------+
void OnStart()
  {
   string path=InpDirectoryName+"//"+InpFileName;
   long   l=0;
//--- 打开文件
   ResetLastError();
   int handle=FileOpen(path,FILE_READ|FILE_CSV);
   if(handle!=INVALID_HANDLE)
     {
      //--- 打印有关文件的所有信息
      Print(InpFileName," file info:");
      FileInfo(handle,FILE_EXISTS,l,"bool");
      FileInfo(handle,FILE_CREATE_DATE,l,"date");
      FileInfo(handle,FILE_MODIFY_DATE,l,"date");
      FileInfo(handle,FILE_ACCESS_DATE,l,"date");
      FileInfo(handle,FILE_SIZE,l,"other");
      FileInfo(handle,FILE_POSITION,l,"other");
      FileInfo(handle,FILE_END,l,"bool");
      FileInfo(handle,FILE_IS_COMMON,l,"bool");
      FileInfo(handle,FILE_IS_TEXT,l,"bool");
      FileInfo(handle,FILE_IS_BINARY,l,"bool");
      FileInfo(handle,FILE_IS_CSV,l,"bool");
      FileInfo(handle,FILE_IS_ANSI,l,"bool");
      FileInfo(handle,FILE_IS_READABLE,l,"bool");
      FileInfo(handle,FILE_IS_WRITABLE,l,"bool");
      //--- 关闭文件
      FileClose(handle);
     }
   else
      PrintFormat("%s file is not opened, ErrorCode = %d",InpFileName,GetLastError());
  }
//+------------------------------------------------------------------+
//| 显示文件属性的值                                                   |
//+------------------------------------------------------------------+
void FileInfo(const int handle,const ENUM_FILE_PROPERTY_INTEGER id,
              long l,const string type)
  {
//--- 接收属性值
   ResetLastError();
   if((l=FileGetInteger(handle,id))!=-1)
     {
      //--- 接收的值,以正确格式显示
      if(!StringCompare(type,"bool"))
         Print(EnumToString(id)," = ",l ? "true" : "false");
      if(!StringCompare(type,"date"))
         Print(EnumToString(id)," = ",(datetime)l);
      if(!StringCompare(type,"other"))
         Print(EnumToString(id)," = ",l);
     }
   else
      Print("Error, Code = ",GetLastError());
  }

另见

文件操作文件属性