Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Пример поиска файлов задан. размеров


Автор: finder_adventures 11.6.2002, 17:04
Натолкните, пожалуйста на мысль - как сделать , чтобы прога просматривала
файлы в заданной папке (с подкаталогами) и если находила файл меньше 100 кб
выводила сообщение в окно "найден ... файл такой-то"

Автор: finder_adventures 11.6.2002, 17:26
Основную трудность для меня представляет сам поиск файлов - как правильно его
осуществить , этот переход от файла к файлу , пока не просмотр-ся все подкаталоги? + GetFileSize() ...

И буду уж очень благодарен тому кто знает , как эти найденные файлы
можно просмотреть /например/ на наличие слова  "Заявление" ?

Автор: Baa 11.6.2002, 17:28
Используешь обычный поиск файлов.
используй функции
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;
Откуда можно взять размер файла :)

Автор: Baa 11.6.2002, 17:30
На форуме были подобные вопросы, поищи :)

Автор: SAV 12.6.2002, 05:36
GREETINGS!

Код

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;
}

Автор: finder_adventures 13.6.2002, 11:05
Приведённый ниже пример выводит имена каталогов и файлов , а как вывести имена
подкаталогов?

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  ;

Автор: TwoK 13.6.2002, 12:12
Здесь есть по этому поводу -
http://www.forum.vingrad.ru/cgi-bin/newforum/ikonboard.cgi?s=3d

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)