FolderDelete

함수는 지정된 디렉토리를 제거합니다. 폴더가 비어 있지 않으면 제거할 수 없습니다.

bool  FolderDelete(
   string  folder_name,       // 삭제할 폴더 이름이 포함된 문자열
   int     common_flag=0      // 범위
   );

Parameters

folder_name

[in] 삭제할 디렉터리의 이름. 폴더의 전체 경로를 포함합니다.

common_flag=0

[in]  디렉토리 위치를 결정하는 플래그. common_flag=FILE_COMMON 라면, 디렉토리는 모든 클라이언트 터미널의 공유 폴더인 terminals \Terminal\Common\Files에 있습니다. 그렇지 않으면, 디렉토리는 로컬 폴더(MQL5\Files 또는 테스트의 경우 MQL5\Tester\Files)에 있습니다.

반환 값

성공하면 true를 반환하고 그렇지 않으면 false를 반환합니다.

참고

보안상의 이유로 파일 작업은 MQL5 언어로 엄격하게 제어됩니다. MQL5를 사용하여 파일 작업을 수행하는 파일은 파일 샌드박스 외부에 있을 수 없습니다.

디렉토리에 하나 이상의 파일 및/또는 하위 디렉토리가 포함되어 있으면 이 디렉토리를 삭제할 수 없으므로 먼저 지워야 합니다. FolderClean()는 폴더의 모든 파일 또는 하위 폴더를 지우는 데 사용됩니다.

예:

//+------------------------------------------------------------------+
//|                                            Demo_FolderDelete.mq5 |
//|                         Copyright 2000-2024, MetaQuotes Ltd. |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2000-2024, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//--- 설명
#property description "이 스크립트는 FolderDelete()의 샘플 사용을 보여 줍니다."
#property description "처음 두 개의 폴더가 생성되고, 그 중 하나는 비어 있고, 두 번째 폴더는 파일을 포함합니다."
#property description "비어 있지 않은 폴더를 삭제하려고 하면 오류가 반환되고 경고가 표시됩니다."
 
//--- 스크립트를 시작할 때 입력 파라미터 대화 상자 표시
#property script_show_inputs
//--- 입력 파라미터
input string   firstFolder="empty";    // 빈(empty) 폴더
input string   secondFolder="nonempty";// 한 파일이 생성될 폴더
string filename="delete_me.txt";       // secondFolder 폴더에 생성할 파일명
//+------------------------------------------------------------------+
//| 스크립트 프로그램 시작 함수                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- 여기에 파일 핸들을 쓰십시오
   int handle;
//--- 작업 중인 폴더 확인
   string working_folder=TerminalInfoString(TERMINAL_DATA_PATH)+"\\MQL5\\Files";
//--- 디버그 메시지  
   PrintFormat("working_folder=%s",working_folder);
//--- 경로 MQL5\Files와 관련한 빈(empty) 폴더 만들기 시도 중
   if(FolderCreate(firstFolder,0)) // 0은 터미널의 로컬 폴더에서 작업 중임을 의미합니다
     {
      //--- 생성된 폴더의 전체 경로 입력
      PrintFormat("%s 폴더가 생성되었습니다",working_folder+"\\"+firstFolder);
      //--- 에러코드 재설정
      ResetLastError();
     }
   else
      PrintFormat("%s 폴더 생성 실패. Error code %d",working_folder+"\\"+firstFolderGetLastError());
 
//--- 이제 FileOpen() 함수를 사용하여 비어 있지 않은 폴더를 만드십시오
   string filepath=secondFolder+"\\"+filename;  // 존재하지 않는 폴더에 쓰기 위해 열려는 파일의 양식 경로
   handle=FileOpen(filepath,FILE_WRITE|FILE_TXT); // 이 경우 FILE_WRITE 플래그를 지정해야 하며, 파일 열기 도움말을 참조하십시오.
   if(handle!=INVALID_HANDLE)
      PrintFormat("%s 파일이 읽기용으로 열렸습니다",working_folder+"\\"+filepath);
   else
      PrintFormat("%s 파일을 %s 폴더에 생성 실패. Error code=",filename,secondFolderGetLastError());
 
   Comment(StringFormat("%s 와 %s 폴더 삭제 준비"firstFoldersecondFolder));
//--- 차트의 메시지를 읽기 위해 5초 정도 잠시 멈춤
   Sleep(5000); // Sleep()은 지표에서 사용되지 않습니다!
 
//--- 대화 상자를 표시하고 사용자에게 물음
   int choice=MessageBox(StringFormat("%s 및 %s 폴더를 삭제하시겠습니까?"firstFoldersecondFolder),
                         "Deleting folders",
                         MB_YESNO|MB_ICONQUESTION); //  Two buttons - "Yes" and "No"
 
//--- 선택한 모델에 따라 작업 실행
   if(choice==IDYES)
     {
      //--- 차트에서 코멘트 삭제
      Comment("");
      //--- "Experts" 저널로 메시지 추가
      PrintFormat("%s 및 %s 폴더 삭제 시도",firstFoldersecondFolder);
      ResetLastError();
      //--- 빈(empty) 폴더 삭제
      if(FolderDelete(firstFolder))
         //--- 폴더가 비어 있으므로 다음 메시지가 표시되어야 합니다
         PrintFormat("%s 폴더가 성공적으로 삭제되었습니다",firstFolder);
      else
         PrintFormat("%s 폴더 삭제 실패. Error code=%d"firstFolderGetLastError());
 
      ResetLastError();
      //--- 파일이 들어 있는 폴더 삭제 
      if(FolderDelete(secondFolder))
         PrintFormat("%s 폴더가 성공적으로 삭제됐습니다"secondFolder);
      else
         //--- 폴더에 파일이 포함되어 있으므로 다음 메시지가 표시되어야 합니다
         PrintFormat("%s 폴더 삭제 실패. Error code=%d"secondFolderGetLastError());
     }
   else
      Print("삭제 취소");
//---
  }

더 보기

FileOpen(), FolderClean(), FileMove()