FileMove

ファイルをローカルまたは共有フォルダから別のフォルダに移動します。

bool  FileMove(
  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 InpSrcName="data.txt";
input string InpDstName="newdata.txt";
input string InpSrcDirectory="SomeFolder";
input string InpDstDirectory="OtherFolder";
//+------------------------------------------------------------------+
//| スクリプトプログラムを開始する関数                                          |
//+------------------------------------------------------------------+
void OnStart()
 {
  string local=TerminalInfoString(TERMINAL_DATA_PATH);
  string common=TerminalInfoString(TERMINAL_COMMONDATA_PATH);
//--- ファイルパスを受け取る
  string src_path;
  string dst_path;
  StringConcatenate(src_path,InpSrcDirectory,"//",InpSrcName);
  StringConcatenate(dst_path,InpDstDirectory,"//",InpDstName);
//--- ソースファイルが存在するかをチェック(存在しなければ終了する)
  if(FileIsExist(src_path))
    PrintFormat("%s file exists in the %s\\Files\\%s folder",InpSrcName,local,InpSrcDirectory);
  else
    {
    PrintFormat("Error, %s source file not found",InpSrcName);
    return;
    }
//--- ターゲットファイルが既存するかをチェックする
  if(FileIsExist(dst_path,FILE_COMMON))
    {
    PrintFormat("%s file exists in the %s\\Files\\%s folder",InpDstName,common,InpDstDirectory);
    //--- ファイルが存在するので移動は FILE_REWRITE フラグで行うべき
    ResetLastError();
    if(FileMove(src_path,0,dst_path,FILE_COMMON|FILE_REWRITE))
        PrintFormat("%s file moved",InpSrcName);
    else
        PrintFormat("Error! Code = %d",GetLastError());
    }
  else
    {
    PrintFormat("%s file does not exist in the %s\\Files\\%s folder",InpDstName,common,InpDstDirectory);
    //--- ファイルが存在しないので移動は FILE_REWRITE フラグなしで行うべき
    ResetLastError();
    if(FileMove(src_path,0,dst_path,FILE_COMMON))
        PrintFormat("%s file moved",InpSrcName);
    else
        PrintFormat("Error! Code = %d",GetLastError());
    }
//--- ファイルが移動されたのでみてみる
  if(FileIsExist(dst_path,FILE_COMMON) && !FileIsExist(src_path,0))
    Print("Success!");
  else
    Print("Error!");
 }

参照

FileIsExist