void ListContentOfDirectory(QDir dir, bool Recurse, bool Hash) { //ListFilesInDirectory(dir); dir.setFilter( QDir::Hidden | QDir::NoSymLinks |QDir::AllDirs ); dir.setSorting(QDir::Size | QDir::Reversed); QFileInfoList list = dir.entryInfoList(); for (int i = 0; i < list.size(); ++i) { QFileInfo fileInfo = list.at(i); QString str1 = fileInfo.fileName(); QString str2 = "."; QString str3 = ".."; if (!str1.compare(str2) || !str1.compare(str3) ) { // std::cout << " found . or .. "; } else { ListFilesInDirectory(dir,Hash); QDir NextDir(fileInfo.absoluteFilePath()); if (Recurse) { ListContentOfDirectory(NextDir,Recurse,Hash); ListFilesInDirectory(dir,Hash); } } } }
void ListFilesInDirectory(const std::string& directory, unsigned int level) { std::string path = directory + "/*"; WIN32_FIND_DATA findData; HANDLE handle = FindFirstFile(path.c_str(), &findData); CHECK_HANDLE_ERRORS(handle); static auto PrintSpaces = [](int level) { for (auto i = 0; i < level; i++) { std::cout << " "; } }; do { if (strcmp(findData.cFileName, ".") == 0) continue; else if (strcmp(findData.cFileName, "..") == 0) continue; //PrintSpaces(level); //std::cout << findData.cFileName << "\n"; if (findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { ListFilesInDirectory(directory + "/" + findData.cFileName, level + 1); } } while (FindNextFile(handle, &findData)); FindClose(handle); }