Develop
2013.04.23 16:13
[c++] 디렉토리 내의 파일 찾기 FindFirstFile() 함수
Views 20663 Comment 6
특정 디렉토리 아래에 있는 모든 파일과 디렉토리 혹은 특정 조건의 파일과 디렉토리를 얻고자 한다면, 다음 API 함수를 이용한다.
HANDLE FindFirstFile(LPCSTR lpFileName, LPWIN32_FIND_DATA finddata);
BOOL FindNextFile(HANDLE hFind, LPWIN32_FIND_DATA finddata);
BOOL FindClose(HANDLE hFind);
FindFirstFile : 파일 검색을 시작한다.
파일 검색 문자열이 잘못되었거나 다른 이유로 함수 실행이 실패했을 경우 INVALID_HANDLE_VALUE로 Define된 상수값을 반환한다. 성공했을 경우 파일 검색 핸들을 반환하고 두 번째로 전달되는 구조체에 첫 번째로 발견되는 파일의 정보를 넣어준다.
LPCSTR lpFileName
파일 검색 문자열을 넘겨준다.
예) "c:*.*" 혹은 "c:*.txt"
LPWIN32_FIND_DATA finddata
파일 검색 데이터 구조체의 포인터를 넘겨준다.
FindNextFile : 다음 파일의 정보를 얻는다.
함수 실행이 성공하였을 경우 TRUE를, 실패하였을 경우 FALSE를 반환한다. 함수 성공시 두 번째 인자로 전해지는 구조체에 파일의 정보를 넣어준다.
HANDLE hFind
FindFirstFile이 반환한 파일 검색 핸들을 넘겨준다.
LPWIN32_FIND_DATA finddata
파일 검색 데이터 구조체의 포인터를 넘겨준다.
FileClose : 파일 핸들을 닫는다.
FindFirstFile에 의해 열린 파일 핸들을 닫는다. 성공하였을 경우 TRUE를, 실패하였을 경우 FALSE를 반환한다.
HANDLE hFind
FindFirstFile이 반환한 파일 검색 핸들을 넘겨준다.
사용 예
#include <windows.h> #include <stdio.h> #include <string.h> int main() { WIN32_FIND_DATA FindData; HANDLE hFind; char path[255]; strcpy(path, "c:windows*"); hFind = FindFirstFile((LPCSTR)path, &FindData); if(hFind==INVALID_HANDLE_VALUE) return 0; do{ printf("%s ", FindData.cFileName); }while(FindNextFile(hFind, &FindData)); FindClose(hFind); return 0; }
-
?
블로그로 담아가도 되나요?
-
넵, 당연히 담아가셔도 됩니다.
출처를 함께 남겨주세요^^ㅋ
감사합니다. -
?
감사합니다~ 근데 댓글 남기기 되게 힘드네요 ;;
-
앗.. 그래요? ㅠㅠ
그냥 로그인 하지 않아도 입력되게 해두었는데요.
개선해야 할 부분이 있으면 제안해 주시면 적극 반영하겠습니다.
감사합니다.^^ -
?
매우 잘 보고 갑니다~
c에서는 _finddatai64_t를 사용했었는데 c++에서는 불가능하더라고요
do{}while도 익숙하지 않아서 그냥 while문으로 변경하였습니다.
다행이 FindNextFile이 새로운 파일이 없을땐 0을 반환해서 큰 문제는 없었네요.
종종 들려서 공부하면 좋을것 같네요.
좋은 글 감사합니다~ -
댓글 감사합니다.^^
No. | Category | Subject | Author | Date | Views |
---|---|---|---|---|---|
597 | Develop | [php] gd 프로그램.. htm 파일.. ㅋㅋ | hooni | 2013.04.23 | 7466 |
596 | Develop | [c] 시간(요일,날짜 포함) 출력하는 프로그램 초간단 코드 | hooni | 2013.04.23 | 7423 |
595 | Develop | [c#] 툴바 최근 버전(IE6, IE7 두가지 버전) | hooni | 2013.04.23 | 2138 |
594 | Develop | [c#] 툴바 현재 욜심히 만들고 있는거.. 백업용.. ㅋㅋ | hooni | 2013.04.23 | 2852 |
593 | Develop | [c++] 중복실행 방지(Mutex;뮤텍스 ) 샘플 소스.. ㅋㅋ | hooni | 2013.04.23 | 8767 |
592 | Develop | [c#] HTML 이벤트 샘플 소스.. | hooni | 2013.04.23 | 7786 |
591 | Develop | [c++] 압축프로그램(Lite Zip) 샘플 | hooni | 2013.04.23 | 8631 |
590 | Develop | [c++] 데이터 압축 프로그램 소스 (lzw) | hooni | 2013.04.23 | 9969 |
589 | Develop | [c++] MFC로 만든 디렉토리/파일 파인더 | hooni | 2013.04.23 | 9366 |
588 | Develop | [c] 아파치 모듈(Apache Module) 만들기 | hooni | 2013.04.23 | 8626 |
587 | Develop | [c++] 현승이가 준 메신저 소스.. ㅋㅋ | hooni | 2013.04.23 | 8299 |
586 | Develop | [linux] 날짜나 파일의 내용으로 검색하는 방법(find 명령 사용) | hooni | 2013.04.23 | 8156 |