Notice
Recent Posts
Recent Comments
Data Analysis for Investment & Control
[C++/STL] 디렉토리 내 파일 리스트 얻어오는 함수 본문
반응형
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 형태로 반환한다.
(내용이 마음에 드셨다면 아래의 '공감' 버튼을 눌러주세요^^)
반응형
'Code > C++:C#:MFC' 카테고리의 다른 글
[C#] ConfigurationManager를 이용한 프로그램 속성 정보 저장/불러오기 기능 구현 (0) | 2016.01.13 |
---|---|
[C++/MFC] 프로그램 실행 파일(*.exe)의 경로를 얻어오는 함수 (0) | 2016.01.13 |
[Tip] DLL에서 다이얼로그 사용 시, 다이얼로그 창이 뜨지 않는 문제 (0) | 2015.05.18 |
[Tip] LPCWSTR(유니코드) <-> LPCSTR(멀티바이트) 쉽게 변환하기 (0) | 2015.05.18 |
C++ dll의 CLR 프로젝트(C++/CLI)의 사용(3) (0) | 2014.04.20 |
Comments