FolderClean

이 함수는 지정된 폴더에 있는 모든 파일을 삭제합니다.

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

Parameters

folder_name

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

common_flag=0

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

반환 값

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

참고

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

이 함수는 모든 파일 및 모든 하위 디렉토리가 삭제될 수 있으므로 주의해야 합니다.

예:

//+------------------------------------------------------------------+
//|                                             Demo_FolderClean.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 "이 스크립트는 FolderClean()의 샘플 사용을 보여 줍니다."
#property description "먼저 FileOpen() 함수를 사용하여 지정된 폴더에 파일을 생성합니다."
#property description "그런 다음 파일을 삭제하기 전에 MessageBox()를 사용하여 경고를 표시합니다."
 
//--- 스크립트를 시작할 때 입력 파라미터 대화 상자 표시
#property script_show_inputs
//--- 입력 파라미터
input string   foldername="demo_folder";  // MQL5/Files/ 에 폴더 생성
input int      files=5;                   // 생성 및 삭제할 파일 수
//+------------------------------------------------------------------+
//| 스크립트 프로그램 시작 함수                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   string name="testfile";
//--- 터미널 데이터 폴더에서 먼저 파일 열기 또는 생성
   for(int N=0;N<files;N++)
     {
      //--- 'demo_folder\testfileN.txt'의 형태의 파일명
      string filemane=StringFormat("%s\\%s%d.txt",foldername,name,N);
      //--- 쓰기 플래그가 있는 파일을 엽니다. 이 경우 'demo_folder'가 자동으로 생성됩니다.
      int handle=FileOpen(filemane,FILE_WRITE);
      //--- FileOpen() 기능이 성공적이었는지 확인
      if(handle==INVALID_HANDLE)
        {
         PrintFormat("%s 파일 생성 실패. Error code",filemane,GetLastError());
         ResetLastError();
        }
      else
        {
         PrintFormat("파일 %s이 성공적으로 열렸습니다",filemane);
         //--- 열려 있는 파일은 더 이상 필요하지 않으므로 닫으십시오
         FileClose(handle);
        }
     }
 
//--- 폴더의 파일 수 확인 
   int k=FilesInFolder(foldername+"\\*.*",0);
   PrintFormat("폴더 %s에 모두 %d 파일이 포함되어 있습니다",foldername,k);
 
//--- 사용자에게 묻는 대화 상자 표시
   int choice=MessageBox(StringFormat("폴더 %s에서 파일 %d를 삭제하려고 하십니다. 계속 하시겠습니까?",foldername,k),
                         "폴더에서 파일 삭제",
                         MB_YESNO|MB_ICONQUESTION); //  2개 버튼 - "예" 및 "아니오"
   ResetLastError();
 
//--- 선택한 변수모에 따라 작업 실행
   if(choice==IDYES)
     {
      //--- 파일 삭제 시작
      PrintFormat("폴더 %s에서 모든 파일 삭제 시도",foldername);
      if(FolderClean(foldername,0))
         PrintFormat("파일이 모두 삭제되어, %s 폴더에 %d 파일이 남았습니다",
                     foldername,
                     FilesInFolder(foldername+"\\*.*",0));
      else
         PrintFormat("폴더 %s에서 파일 삭제 실패. Error code %d",foldername,GetLastError());
     }
   else
      PrintFormat("삭제 취소됨");
//---
  }
//+------------------------------------------------------------------+
//| 지정된 폴더의 파일 수를 반환합니다              |
//+------------------------------------------------------------------+
int FilesInFolder(string path,int flag)
  {
   int count=0;
   long handle;
   string filename;
//---
   handle=FileFindFirst(path,filename,flag);
//--- 하나 이상의 파일이 발견되면 추가 파일 검색
   if(handle!=INVALID_HANDLE)
     {
      //--- 파일명 보기
      PrintFormat("%s 파일 발견",filename);
      //--- 파일/폴더 발견 카운터 증가
      count++;
      //--- 모든 파일/폴더에서 탐색 
      while(FileFindNext(handle,filename))
        {
         PrintFormat("%s 파일 발견",filename);
         count++;
        }
      //--- 완료 시 검색 핸들을 닫는 것을 잊지 마십시오
      FileFindClose(handle);
     }
   else // 핸들 가져오기 실패
     {
      PrintFormat("폴더 %s에서 파일 탐색 실패",path);
     }
//--- 결과 반환
   return count;
  }

더 보기

FileFindFirst, FileFindNext, FileFindClose