Поиск файла определенного размера
Written on 08 Октября 2007 .
Используешь обычный поиск файлов. используй функции FindFirstFile FindNextFile FindClose При нахождению файлов ( их можно искать по маске *.* ) функции заполняют структуру typedef struct _WIN32_FIND_DATA { // wfd DWORD dwFileAttributes; FILETIME ftCreationTime; FILETIME ftLastAccessTime; FILETIME ftLastWriteTime; DWORD nFileSizeHigh; DWORD nFileSizeLow; DWORD dwReserved0; DWORD dwReserved1; TCHAR cFileName[ MAX_PATH ]; TCHAR cAlternateFileName[ 14 ]; } WIN32_FIND_DATA; Откуда можно взять размер файла. Или можно поступить таким образом: bool ScanDrive(CString dir /*Например: Temp:\*.* */ ) { CFileFind hFile; DWORD dwSize; CFile m_sFile; hFile.FindFile(dir,0); int ErCount=0; hFile.FindNextFile(); do { if (!hFile.IsDirectory()) dwSize=m_sFile.GetLength(); /*Тут получаем размер файла. Если подходит, то можем уже куда либо занести его.*/ if ((hFile.IsDirectory())&&(hFile.GetFileName()!=".")&&(hFile.GetFileName()!="..")){ if (!ScanDrive(hFile.GetFilePath()+"\\*.*")) return false ; } if (!hFile.FindNextFile()) // ErCount++; } while (ErCount<2); return true ; } Приведённый ниже пример выводит имена каталогов и файлов , а как вывести имена подкаталогов? WIN32_FIND_DATA Find; HANDLE hFind; hFind = FindFirstFile("d:\\*" , &Find); if (hFind != INVALID_HANDLE_VALUE) { do { ListBox2-> Items ->Add(Find.cFileName); } while (FindNextFile(hFind,&Find)); FindClose(hFind); CloseHandle(hFind); } return ;