FileCopy

이 함수는 로컬 또는 공유 폴더에서 다른 파일로 원본 파일을 복사합니다.

bool  FileCopy(
   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_REW 플래그가 지정되지 않은 경우 파일이 다시 작성되지 않고 함수가 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("파일이 복제 되었습니다!");
      else
         Print("파일이 복제되지 않았습니다!");
     }
   else
     {
      //--- 복제 파일이 이미 있습니다. FILE_REWRITE 플래그 없이 복제해 보십시오(잘못 복제).
      if(FileCopy(InpSrc,0,InpDst,0))
         Print("파일이 복제 되었습니다!");
      else
         Print("파일이 복제되지 않았습니다!");
      //--- InpDst 파일의 내용이 그대로 남아있습니다
      FileDisplay(InpDst);
      //--- FILE_REWRITE 플래그를 사용하여 다시 한 번 복제합니다 (파일이 있는 경우 올바른 복제).
      if(FileCopy(InpSrc,0,InpDst,FILE_REWRITE))
         Print("파일이 복제 되었습니다!");
      else
         Print("파일이 복제되지 않았습니다!");
     }
//--- 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);
  }