Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.80
mexx-nikitin
78 / 78 / 3
Регистрация: 28.03.2010
Сообщений: 306
#1

Поиск файлов по маске в заданной и вложенных папках - C++

19.11.2010, 20:23. Просмотров 1904. Ответов 0
Метки нет (Все метки)

Написать программу поиска файлов по их расширению в текущей или вложеной папках. Программа должна выполнять упорядочивание файлов по дате, размеру и дате создания
Функция поиска файлов по маске в заданной и вложенных папках.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
BOOL SearchFiles(
        LPCTSTR lpszFileName,                // Директория и маска файлов для поиска
        LPSEARCHFUNC lpSearchFunc,            // Функция, вызываемая для всех найденных файлов.
        BOOL bInnerFolders /* = TRUE */)    // TRUE - поиск в подпапках. 
                                            // FALSE - поиск только в заданной папке
typedef void (*LPSEARCHFUNC)(LPCTSTR lpszFileName);
 
BOOL SearchFiles(LPCTSTR lpszFileName, LPSEARCHFUNC lpSearchFunc, BOOL bInnerFolders = TRUE)
{
    LPTSTR part;
   char tmp[MAX_PATH]; // временный массив
    char name[MAX_PATH];
 
   HANDLE hSearch = NULL;
   WIN32_FIND_DATA wfd;
    memset(&wfd, 0, sizeof(WIN32_FIND_DATA));
 
    // сначало поиск внутри вложенных папках ...
    if(bInnerFolders)
    {
        if(GetFullPathName(lpszFileName, MAX_PATH, tmp, &part) == 0) return FALSE;
        strcpy(name, part);
        strcpy(part, "*.*");
 
        // если папки существуют, то делаем поиск
        wfd.dwFileAttributes = FILE_ATTRIBUTE_DIRECTORY;
        if (!((hSearch = FindFirstFile(tmp, &wfd)) == INVALID_HANDLE_VALUE))
        do
        {
            // в каждой папке есть две папки с именами "." и ".."
            // и эти папки мы не трогаем
 
            // пропускаем папки "." и ".."
            if (!strncmp(wfd.cFileName, ".", 1) || !strncmp(wfd.cFileName, "..", 2))            
           continue;
       
            if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) // если мы нашли папку
            {
                char next[MAX_PATH];
                if(GetFullPathName(lpszFileName, MAX_PATH, next, &part) == 0) return FALSE;
                strcpy(part, wfd.cFileName);
                strcat(next, "\\");
                strcat(next, name);
 
                SearchFiles(next, lpSearchFunc, TRUE);
            }
        }
        while (FindNextFile(hSearch, &wfd)); // ищем следующий файл
 
        FindClose (hSearch); // заканчиваем поиск
    }
 
   if ((hSearch = FindFirstFile(lpszFileName, &wfd)) == INVALID_HANDLE_VALUE) 
       return TRUE; // в противном случае выходим
   do
   if (!(wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) // если мы нашли файл
   {
        char file[MAX_PATH];
        if(GetFullPathName(lpszFileName, MAX_PATH, file, &part) == 0) return FALSE;
        strcpy(part, wfd.cFileName);
 
        lpSearchFunc(file);
   }
   while (FindNextFile(hSearch, &wfd)); // ищем следующий файл
   FindClose (hSearch); // заканчиваем поиск
 
    return TRUE;
}
Вот код программы но она почему то неработает
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.11.2010, 20:23
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Поиск файлов по маске в заданной и вложенных папках (C++):

Поиск файлов в папках и подпапках - C++
Здравствуйте! Есть задача, в которой необходимо выполнить вход во все папки и подпапки некой начальной директории. Для этого я решил...

Поиск файлов с определенным расширением и именем в различных папках - C++
Здравствуйте. Помогите написать программу, в которой будет осуществляться поиск файла определенного расширения в различных папках и в...

Поиск файлов по заданной строке!!! - C++
Помогите плиз найти ошибку!!!Вроде поиск сам работает а когда вставляю код по поиску подстроки чёт тупит((Заранее спасибо!!! #include...

Си, использование вложенных файлов *.c - C++
Всем доброго времени дня! Вопрос: Пишу программу на C под Linux. есть файл main.c, в котором у меня располагается основное тело...

Поиск файла по маске - C++
Вторичный поток ищет файлы в заданном каталоге по маске. Главный поток выводит файлы в порядке убывания размера файлов. Использовать...

Поиск файла по маске - C++
Добрый вечер. Ребята, подскажите как реализовать в этой строке поиск файлов с двумя расширениями. С одним расширением все ок, два не...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.11.2010, 20:23
Привет! Вот еще темы с ответами:

Поиск строк в файле по маске - C++
Программа осуществляет в файле поиск строк, отвечающих заданной маске. В маску могут входить символ «?» (любой печатный символ или пусто)....

Как организовать поиск файла по маске - C++
помогите с организацией поиска файла по маске

Чтение из файлов по "маске" - C++
Проблема такова: есть файл в котором описаны функции(они также объявлены и описаны в программе). Например: Func1(1,2); Func2(3,4); ...

Выполнять поиск файлов во вложенных папках - CMD/BAT
В продолжение темы http://www.cyberforum.ru/cmd-bat/thread938336.html Выполняю архивацию doc файлов с рабочего стола ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru