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] アクセスフラグ。パラメータは FILE_REWRITE 及び/または FILE_COMMON の 2 つのフラグのみを含むことができ、他のフラグは無視されます。宇ファイルが既存し FILE_REWRITE フラグが指定されていない場合、ファイルは書き換えされず、関数は false を返します。

戻り値

失敗の場合 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 file の内容は変わらない
     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);
 }