FileCopy

函数从本地或者共享文件中复制原始文件到另一文件中。

bool  FileCopy(

   const string  src_file_name,     // 源文件名称

   int           common_flag,       // 位置

   const string  dst_file_name,     // 目标文件名称

   int           mode_flags         // 访问模式

   );

参量

src_file_name

[in]  复制的文件名称。

common_flag

[in] 标记 决定文件位置,如果common_flag = FILE_COMMON,文件为所有客户端放置共享文件夹 \Terminal\Common\Files。否则,文件放置在本地文件夹中 (例如,common_flag=0)。

dst_file_name

[in]  结果文件名。

mode_flags

[in] 访问标记。 参量只包括2个标签:FILE_REWRITE 和/或 FILE_COMMON -忽略其他标签。如果文件已经存在,FILE_REWRITE标签未指定,文件就不能再编辑,函数返回错误值。

返回值

若失败函数返回false。

注释

出于安全考虑,工作文件必须严格由MQL5语言管理。使用MQL5实 施文件操作的文件意味着,不能在文件沙箱外。

如果新文件已经存在,复制文件在mode_flags 参量中取决于FILE_REWRITE标签的可用性。

示例:

//--- 启动脚本时显示输入参数的窗口

#property script_show_inputs

//--- 输入参数

input string InpSrc="source.txt";       // 源

input string InpDst="destination.txt";  // 复制

input int    InpEncodingType=FILE_ANSI; // ANSI=32 或 UNICODE=64

//+------------------------------------------------------------------+

//| 脚本程序启动函数                                                   |

//+------------------------------------------------------------------+

void OnStart()

  {

//--- 显示源内容(它必须存在)

   if(!FileDisplay(InpSrc))

      return;

//--- 检查复制文件是否已经存在(可能没有创建)

   if(!FileDisplay(InpDst))

     {

      //--- 复制文件不存在,无FILE_REWRITE标识复制 (正确复制)

      if(FileCopy(InpSrc,0,InpDst,0))

         Print("File is copied!");

      else

         Print("File is not copied!");

     }

   else

     {

      //--- 复制文件已经存在,尝试无FILE_REWRITE标识复制(不正确复制)

      if(FileCopy(InpSrc,0,InpDst,0))

         Print("File is copied!");

      else

         Print("File is not copied!");

      //--- InpDst 文件的内容保持不变

      FileDisplay(InpDst);

      //--- 再次使用FILE_REWRITE标识复制(如果文件存在,正确复制)

      if(FileCopy(InpSrc,0,InpDst,FILE_REWRITE))

         Print("File is copied!");

      else

         Print("File is not copied!");

     }

//--- 接收InpSrc文件复制

   FileDisplay(InpDst);

  }

//+------------------------------------------------------------------+

//| 阅读文件内容                                                       |

//+------------------------------------------------------------------+

bool FileDisplay(const string file_name)

  {

//--- 重置错误值

   ResetLastError();

//--- 打开文件

   int file_handle=FileOpen(file_name,FILE_READ|FILE_TXT|InpEncodingType);

   if(file_handle!=INVALID_HANDLE)

     {

      //--- 在循环中显示文件内容

      Print("+---------------------+");

      PrintFormat("File name = %s",file_name);

      while(!FileIsEnding(file_handle))

         Print(FileReadString(file_handle));

      Print("+---------------------+");

      //--- 关闭文件

      FileClose(file_handle);

      return(true);

     }

//--- 打开文件失败

   PrintFormat("%s is not opened, error = %d",file_name,GetLastError());

   return(false);

  }