FileCopy
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);
}