C++ Code Sample: Get Total Items in Folder
Liệt kê file trong một folder.
Khi bạn xây dựng một phần mềm, sẽ có lúc bạn cần thực hiện một chức năng.
Liệt kê các file có trong một folder, hoặc liệt một nhóm định dang file có trong 1 folder.
Hãy tham khảo mẫu code dưới đây.
#include <iostream> #include <windows.h> #include <string> #include <vector> #include <conio.h> wchar_t* StringToWchar(std::string str) { int idx = 0; int count = str.size(); wchar_t *ws_str = new wchar_t[count + 1]; while (idx < str.size()) { ws_str[idx] = (wchar_t)str[idx]; idx++; } ws_str[idx] = '\0'; return ws_str; } std::string WcharToString(wchar_t* wchar_str) { std::string str(""); int idx = 0; while (wchar_str[idx] != 0) { str += (char)wchar_str[idx]; ++idx; } return str; } std::vector<std::string> GetItemFolder(std::string path) { std::vector<std::string> file_list; std::string search_path = path + "/*.*"; WIN32_FIND_DATA fd; wchar_t* file_path = StringToWchar(search_path); HANDLE hFind = ::FindFirstFile(file_path, &fd); if (hFind != INVALID_HANDLE_VALUE) { do { if (!(fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) { std::string str = WcharToString(fd.cFileName); file_list.push_back(str); } } while (::FindNextFile(hFind, &fd)); ::FindClose(hFind); } return file_list; } int main() { std::string sPath = "C:\\Users\\passionpham\\Desktop\\Temp Data"; std::vector<std::string> fileList = GetItemFolder(sPath); for (int i = 0; i < fileList.size(); ++i) { std::cout << fileList.at(i) << std::endl; } _getch(); return 0; }
Và đây là kết quả.
END.