본문 바로가기

자작 프로그램

FindFirstFile, FindNextFile, FindClose 예제

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
#include <windows.h>
#include <stdio.h>
#include <tchar.h>
#include <conio.h>
#include <locale.h>
void main()
{
    TCHAR szTemp[512]; // 임시 버퍼
    TCHAR szPathBuffer[MAX_PATH]; // 사용자로부터 입력
    TCHAR szPathPattern[MAX_PATH]; // 검색 패턴
    DWORD i; // 인덱스 변수
    HANDLE hItem; // 검색 핸들
    WIN32_FIND_DATA findData; // 파일 정보
    setlocale(LC_ALL, ".949");
    _tprintf(TEXT("디렉터리 경로를 입력해 주세요. (입력 예: C: 또는 C:\\My Documents)\n\r"));
    _tprintf(TEXT("입력 >> "));
#if defined(_UNICODE) || defined(UNICODE) // 유니코드면?
    _tscanf(TEXT("%ws"), szPathBuffer); 
    _stprintf(szPathPattern, TEXT("%ws\\*"), szPathBuffer);
#else // SBCS면?
    _tscanf(TEXT("%s"), szPathBuffer);
    _stprintf(szPathPattern, TEXT("%s\\*"), szPathBuffer);
#endif
#if defined(_UNICODE) || defined(UNICODE)
    _tprintf(TEXT("검색 패턴: %ws\n\r"), szPathPattern);
#else
    _tprintf(TEXT("검색 패턴: %s\n\r"), szPathPattern);
#endif
    i = 0;
    hItem = FindFirstFile(szPathPattern, &findData);
    if(hItem == INVALID_HANDLE_VALUE)
    {
        _tscanf(TEXT("오류 났어요\n\r"));
        return;
    }
    do
    {
        i++;
        if((findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0) // 디렉터리면?
        {
            // 이름을 대괄호로 감싸서 출력
#if defined(_UNICODE) || defined(UNICODE)
            _stprintf(szTemp, TEXT("[%ws]"), findData.cFileName);
            _tprintf(TEXT("%30ws"), szTemp);
#else
            _stprintf(szTemp, TEXT("[%s]"), findData.cFileName);
            _tprintf(TEXT("%30s"), szTemp);
#endif
        }
        else
        {
            // 파일이면 그냥 이름 출력
#if defined(_UNICODE) || defined(UNICODE)
            _stprintf(szTemp, TEXT("%ws"), findData.cFileName);
            _tprintf(TEXT("%30ws"), szTemp);
#else
            _stprintf(szTemp, TEXT("%s"), findData.cFileName);
            _tprintf(TEXT("%30s"), szTemp);
#endif
        }
        
        if(i % 2 == 0) _tprintf(TEXT("\n\r"));
    } while(FindNextFile(hItem, &findData));
    FindClose(hItem);
    _tprintf(TEXT("\n\r"));
    _tprintf(TEXT("끝.\n\r"));
    _getch();
}

'자작 프로그램' 카테고리의 다른 글

문자열 크로스 예제  (0) 2011.03.05
문자열 빈도 프로그램  (0) 2011.02.28
대/소문자 변환 예제  (0) 2011.02.27
완전 간단 회원 관리 프로그램  (0) 2011.02.16
UK 검사의 개요와 검사 프로그램 구현  (10) 2011.02.08