Форум программистов, компьютерный форум CyberForum.ru

програмный поиск файла! - C++

Восстановить пароль Регистрация
 
Ferk
 Аватар для Ferk
3 / 3 / 1
Регистрация: 28.07.2011
Сообщений: 105
12.09.2011, 11:37     програмный поиск файла! #1
народ помогите пожалуйста)мне надо написать код чтобы можно было найти какой либо файл на жестком.. как это можно осуществить на c++?
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Байт
 Аватар для Байт
13993 / 8824 / 1231
Регистрация: 24.12.2010
Сообщений: 15,990
12.09.2011, 12:01     програмный поиск файла! #2
http://lmgtfy.com/?q=findnext
И еще надо будет рекурсию по подпапкам устроить
Петррр
12.09.2011, 12:07
  #3
 Комментарий модератора 
Не отсылайте других пользователей в поиск и избегайте ссылок на поисковые системы (Google, Yandex и др.). Самостоятельно найдите ответ на вопрос и разместите его на форуме.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
12.09.2011, 12:50     програмный поиск файла! #4
Ferk, boost::filesystem
-=ЮрА=-
Заблокирован
Автор FAQ
12.09.2011, 12:57     програмный поиск файла! #5
Цитата Сообщение от ForEveR Посмотреть сообщение
boost::filesystem
существуют ещё и "дедовские" алгоритмы поиска, которые успешно работают и работали ещё задолго до появления буста

Ferk, вот тебе проект, там не только поиск, а ещё и поиск по маске есть Поиск файла по шаблону
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
12.09.2011, 13:01     програмный поиск файла! #6
-=ЮрА=-, Конечно. Но с бустом-то поудобнее будет
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
12.09.2011, 14:23     програмный поиск файла! #7
Да полно таких тем на форуме!
нужна функция которая находит файлы
Ручная сортировка файлов по разрешениям
вот парочка на вскидку...
-=ЮрА=-
Заблокирован
Автор FAQ
12.09.2011, 14:28     програмный поиск файла! #8
Также возможен поиск c использованием IShellFolder (кстати в этом случае можно накапливать массив LPITEMIDLIST-ов из которых методом ParseDisplayName получать полные пути - такой подход сам юзаю сейчас от FindFirst(Next)File уже отказался, как от ресурсозатратного метода)
IShellFolder::EnumObjects > IEnumIDList->Next
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
12.09.2011, 14:51     програмный поиск файла! #9
-=ЮрА=-, так это только под форточки...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.09.2011, 15:43     програмный поиск файла!
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
12.09.2011, 15:43     програмный поиск файла! #10
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#include <iostream>
#include <vector>
#include <iterator>
#include <string>
 
#include <boost/filesystem.hpp>
#include <boost/program_options/parsers.hpp>
#include <boost/program_options.hpp>
 
namespace po = boost::program_options;
namespace fs = boost::filesystem;
 
po::options_description arguments("Commands");
 
po::variables_map register_config(int argc, char* argv[])
{
    arguments.add_options()
        ("help", "show this message")
        ("directory,d", po::value<std::string>(), "full path directory for search in")
        ("file,f", po::value<std::string>(), "file name for search")
        ("ext,e", po::value<std::string>(), "extension for search")
    ;
    po::variables_map result;
    po::store(po::parse_command_line(argc, argv, arguments), result);
    po::notify(result);
    return result;
}
 
std::vector<fs::path> find_files_by_name(const std::string& directory, const std::string& file)
{
    fs::recursive_directory_iterator end;
    fs::path path(directory);
    std::vector<fs::path> result;
    for (fs::recursive_directory_iterator iter(path); iter != end;
         ++iter)
    {
        const fs::path& file_path = iter->path();
        if (file_path.filename() == file)
        {
            result.push_back(file_path);
        }
    }
    return result;
}
 
std::vector<fs::path> find_files_by_ext(const std::string& directory, const std::string& ext)
{
    fs::recursive_directory_iterator end;
    fs::path path(directory);
    std::vector<fs::path> result;
    for (fs::recursive_directory_iterator iter(path); iter != end;
         ++iter)
    {
        const fs::path& file_path = iter->path();
        if (file_path.extension() == ext)
        {
            result.push_back(file_path);
        }
    }
    return result;
}
 
int main(int argc, char* argv[])
{
    po::variables_map params = register_config(argc, argv);
    std::string directory;
    std::string file;
    std::string ext;
    if (params.count("directory"))
    {
        directory = params["directory"].as<std::string>();
    }
    if (params.count("file"))
    {
        file = params["file"].as<std::string>();
    }
    if (params.count("ext"))
    {
        ext = params["ext"].as<std::string>();
    }
    if (directory.empty() && (file.empty() || ext.empty()))
    {
        std::cerr << "usage: " << arguments << std::endl;
        return 1;
    }
    std::vector<fs::path> paths;
    if (!file.empty())
    {
        paths = find_files_by_name(directory, file);
        std::cout << "Files with name: " << file << ":" << std::endl;
        std::copy(paths.begin(), paths.end(), std::ostream_iterator<fs::path>(std::cout, "\n"));
    }
    if (!ext.empty())
    {
        paths = find_files_by_ext(directory, ext);
        std::cout << "Files with ext: " << ext << ":" << std::endl;
        std::copy(paths.begin(), paths.end(), std::ostream_iterator<fs::path>(std::cout, "\n"));
    }
    return 0;
}
Код
forever@pterois:~/My_pro1/test_library/tests$ ./tag_test -d /home/forever/My_pro1/python/Gray\ Hat\ Python/src/ -e .py
Files with ext: .py:
/home/forever/My_pro1/python/Gray Hat Python/src/uno_work.py
/home/forever/My_pro1/python/Gray Hat Python/src/Test_m.py
/home/forever/My_pro1/python/Gray Hat Python/src/card_stat.py
/home/forever/My_pro1/python/Gray Hat Python/src/ooHelper.py
/home/forever/My_pro1/python/Gray Hat Python/src/chapter1-printf.py
/home/forever/My_pro1/python/Gray Hat Python/src/card_reg.py
/home/forever/My_pro1/python/Gray Hat Python/src/ereport.py
/home/forever/My_pro1/python/Gray Hat Python/src/my_module.py
/home/forever/My_pro1/python/Gray Hat Python/src/card_registry.py


forever@pterois:~/My_pro1/test_library/tests$ ./tag_test -d /home/forever/My_pro1/python/Gray\ Hat\ Python/src/ -f my_module.py
Files with name: my_module.py:
/home/forever/My_pro1/python/Gray Hat Python/src/my_module.py
Yandex
Объявления
12.09.2011, 15:43     програмный поиск файла!
Ответ Создать тему
Опции темы

Текущее время: 01:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru