Data Analysis for Investment & Control

[C++/STL] 디렉토리 내 파일 리스트 얻어오는 함수 본문

Code/C++:C#:MFC

[C++/STL] 디렉토리 내 파일 리스트 얻어오는 함수

아슈람 2016. 1. 13. 00:07
반응형

C#에서는 Sytem.IO의 Directory 클래스를 이용해 특정 경로 내의 파일 리스트를 쉽게 얻어 올 수 있다. 
하지만, C++에서는 어떻게 얻어올까 구글링을 하다가 dirent.h를 활용하는 방법 등 몇 가지 코드를 찾을 수가 있었는데, 그 중 가장 직관적인 방법을 정리하도록 한다.

함수를 사용하려면 다음을 추가한다.

#include <Windows.h>
#include <string>
#include <vector>

  
[Header]

typedef std::wstring str_t;

vector<str_t> get_files_in_folder(str_t folder, str_t file_type = L "*.*");

[Source]

vector<str_t> get_files_in_folder(str_t folder, str_t file_type)
{
    vector<str_t> names;
    wchar_t search_path[200];
    wsprintf(search_path, L "%s/%s", folder.c_str(), file_type.c_str());
    WIN32_FIND_DATA fd;
    HANDLE hFind = ::FindFirstFile(search_path, &fd);
    if(hFind != INVALID_HANDLE_VALUE) {
        do {
            // read all (real) files in current folder
            // , delete '!' read other 2 default folder . and ..
            if(! (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) ) {
                names.push_back(fd.cFileName);
            }
        } while(::FindNextFile(hFind, &fd));
        ::FindClose(hFind);
    }
    return names;
}


경로와 찾고자 하는 파일의 확장자를 인자로 넣어주면, 경로 내의 파일 리스트를 vector 형태로 반환한다.


(내용이 마음에 드셨다면 아래의 '공감' 버튼을 눌러주세요^^)


반응형
Comments