FileMove

로컬 또는 공유 폴더에서 다른 폴더로 파일을 이동합니다.

bool  FileMove(
   const string  src_file_name,    // 이동 작업의 파일 이름
   int           common_flag,      // 위치
   const string  dst_file_name,    // 대상 파일의 이름
   int           mode_flags        // 엑세스 모드
   );

Parameters

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);
//--- 원본 파일이 있는지 확인 (그렇지않으면 - exit)
   if(FileIsExist(src_path))
      PrintFormat("%s 파일이 %s\\Files\\%s 폴더에 있습니다",InpSrcName,local,InpSrcDirectory);
   else
     {
      PrintFormat("에러, %s 소스 파일이 탐색되지 않습니다",InpSrcName);
      return;
     }
//--- 결과 파일이 이미 있는지 확인
   if(FileIsExist(dst_path,FILE_COMMON))
     {
      PrintFormat("%s 파일이 %s\\Files\\%s 폴더에 존재합니다",InpDstName,common,InpDstDirectory);
      //--- 파일이 존재하고, 이동은 FILE_REWRITE 플래그로 수행되어야 합니다.
      ResetLastError();
      if(FileMove(src_path,0,dst_path,FILE_COMMON|FILE_REWRITE))
         PrintFormat("%s 파일이 이동됐습니다",InpSrcName);
      else
         PrintFormat("에러! Code = %d",GetLastError());
     }
   else
     {
      PrintFormat("%s 파일이 %s\\Files\\%s 폴더에 존재하지 않습니다",InpDstName,common,InpDstDirectory);
      //--- 파일이 없으므로 FILE_REWRITE 플래그 없이 이동해야 합니다
      ResetLastError();
      if(FileMove(src_path,0,dst_path,FILE_COMMON))
         PrintFormat("%s 파일이 이동됐습니다",InpSrcName);
      else
         PrintFormat("에러! Code = %d",GetLastError());
     }
//--- 파일이 이동되었습니다; 확인해 보겠습니다.
   if(FileIsExist(dst_path,FILE_COMMON) && !FileIsExist(src_path,0))
      Print("성공!");
   else
      Print("오류!");
  }

더 보기

FileIsExist