|
分類:[C/C++]
フォルダ内のサブディレクトも含めたテキストファイルだけの数を数えたいです。 下記のコードだとテキストファイル以外も含めたフォルダ内のすべてのファイルの数を数えてしまいます。 _T("\\*.txt")にするとテキストファイルを数えますが、サブディレクトリ内のテキストファイルまで数えてくれません。 どうすればいいでしょうか?よろしくお願いします。
std::size_t file_count_native(const std::basic_string<TCHAR>& src) { std::basic_string<TCHAR> root = src + _T("\\*.*"); WIN32_FIND_DATA wfd = {}; HANDLE handle = FindFirstFile(root.c_str(), &wfd); if (handle == INVALID_HANDLE_VALUE) return 0;
std::size_t result = 0; do { std::basic_string<TCHAR> path(wfd.cFileName); if (path != _T(".") && path != _T("..")) { ++result; if ((wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) result += file_count_native(src + _T('\\') + path); } } while (FindNextFile(handle, &wfd)); FindClose(handle);
std::cout << result << std::endl;
return result; }
|