FileFindFirst

이 함수는 지정된 필터에 따라 디렉토리의 파일 또는 subdirectories 검색을 시작합니다.

long  FileFindFirst(
   const string   file_filter,          // 문자열 - 검색 필터
   string&        returned_filename,    // 발견된 파일 또는 하위 디렉토리의 이름
   int            common_flag=0         // 검색 정의
   );

Parameters

file_filter

[in]  검색 필터. 파일을 검색할 \Files 디렉토리와 관련된 하위 디렉토리(또는 중첩된 하위 디렉토리 순서)를 필터에 지정할 수 있습니다.

returned_filename

[out]  반환된 매개 변수로, 이 매개 변수가 성공시 처음 발견된 파일 또는 하위 디렉토리의 이름이 배치됩니다. 파일명(확장자 포함), 디렉토리 및 하위 디렉토리만 검색 필터에 지정되었는지 여부에 관계없이 포함되지 않습니다.

common_flag

[in]  파일 위치를 결정짓는 플래그. common_flag = FILE_COMMON 라면, 파일은 모든 클라이언트 터미널의 공유 폴더인 \Terminal\Common\Files에 있습니다. 그렇지 않으면, 파일은 로컬 폴더에 있습니다.

반환 값

검색된 개체의 핸들을 반환합니다. 이 핸들은 FileFindNext() 함수를 기준으로 파일과 하위 디렉토리를 추가로 정렬하는 데 사용하거나, 파일이 없을 때 INVALID_HANDLE 및 필터에 해당하는 하위 디렉토리 를 정렬하는 데 사용됩니다(특히 디렉토리가 비어 있을 때). 검색 후 FileFindClose() 함수를 사용하여 핸들을 닫아야 합니다.

참고

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

예:

//--- 스크립트를 시작할 때 입력 매개 변수 창 표시
#property script_show_inputs
//--- filter
input string InpFilter="Dir1\\*";
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   string file_name;
   string int_dir="";
   int    i=1,pos=0,last_pos=-1;
//--- 마지막 백슬래시 찾기
   while(!IsStopped())
     {
      pos=StringFind(InpFilter,"\\",pos+1);
      if(pos>=0)
         last_pos=pos;
      else
         break;
     }
//--- the filter contains the folder name
   if(last_pos>=0)
      int_dir=StringSubstr(InpFilter,0,last_pos+1);
//--- 로컬 폴더의 루트에 검색 핸들 가져오기
   long search_handle=FileFindFirst(InpFilter,file_name);
//--- FileFindFirst()가 성공적으로 실행되었는지 확인
   if(search_handle!=INVALID_HANDLE)
     {
      //--- 루프에서 전달된 문자열이 파일 또는 디렉토리의 이름인지 확인하십시오
      do
        {
         ResetLastError();
         //--- 파일이면 함수는 true를 반환하고 디렉토리이면 오류 ERR_FILE_IS_DIRECTORY 를 반환
         FileIsExist(int_dir+file_name);
         PrintFormat("%d : %s name = %s",i,GetLastError()==ERR_FILE_IS_DIRECTORY ? "Directory" : "File",file_name);
         i++;
        }
      while(FileFindNext(search_handle,file_name));
      //--- 검색 핸들 닫기
      FileFindClose(search_handle);
     }
   else
      Print("Files not found!");
  }

더 보기

FileFindNext, FileFindClose