예제 #1
0
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);
           }
       }
    }

}
예제 #2
0
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);
}