Поиск файла определенного размера

Используешь обычный поиск файлов.
используй функции
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 ;
 
« Предыдущая статья   Следующая статья »