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 형태로 반환한다.
(내용이 마음에 드셨다면 아래의 '공감' 버튼을 눌러주세요^^)
반응형