Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.86/29: Рейтинг темы: голосов - 29, средняя оценка - 4.86
 Аватар для XhonoRjke
1 / 1 / 2
Регистрация: 02.09.2010
Сообщений: 125

Поиск по всем разделам диска

17.03.2018, 12:16. Показов 6355. Ответов 69
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Нашел код поиска файлов по названиям или форматам. Но почему он ищет только в системных папках?
Windows или Users, а по обычным ничего не выдаёт. Помогите разобраться)

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
       private void button9_Click(object sender, EventArgs e)
        {
            var results = MySearcher.GetFiles(@"C:\", "test|*.jpg");
            foreach (var result in results)
            {
                //Console.WriteLine(result.Name);
                richTextBox1.AppendText(result.FullName);
                richTextBox1.AppendText("\n");
                richTextBox1.Refresh();
            }
        }
 
        public static class MySearcher
        {
            private static readonly string[] Splitter = { "|" };
            public static IEnumerable<FileInfo> GetFiles(string path, string mask)
            {
                var maskArray = mask.Replace("*", ".+").Split(Splitter, StringSplitOptions.RemoveEmptyEntries).Select(x => "(" + x + ")");
                var pattern = string.Join("|", maskArray);
                var regex = new Regex(pattern);
 
                string[] entries;
                try
                {
                    entries = Directory.GetFileSystemEntries(path);
                }
                catch (UnauthorizedAccessException)
                {
                    yield break;
                }
                foreach (string entry in entries)
                {
                    var fi = new FileInfo(entry);
                    if (fi.Attributes.HasFlag(FileAttributes.Directory))
                        foreach (var fileInfo in GetFiles(entry, mask))
                        {
                            yield return fileInfo;
                        }
                    else if (regex.IsMatch(entry))
                        yield return fi;
                }
            }
        }
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.03.2018, 12:16
Ответы с готовыми решениями:

Как изменить и применить вид папок ко всем разделам и подразделам, в т.ч. и флешкам
Как изменить и применить вид папок КО ВСЕМ РАЗДЕЛАМ и подразделам, в т.ч. и во флешках и т.д. надоедает менять виды папок в...

Доступ пользователей у разделам жесткого диска!
Народ помогите плз! Такая ситуация с раздела D могу прочитать ин-цию а удалить, добавить или заменить не как, в свойствах любого файла...

Какие права пользователей назначаются по-умолчания разделам жесткого диска после установки windows?
Здравствуйте. Какие права пользователей назначаются по-умолчания разделам жесткого диска после установки винды(7)? Сколько пользователей...

69
189 / 166 / 101
Регистрация: 14.03.2018
Сообщений: 426
19.03.2018, 21:57
Студворк — интернет-сервис помощи студентам
Ну я смотрю, что где-то раза в 2 быстрее работает, чем обычный однопоточный поиск, бывает и более.
Тяжело сравнить точно, так как экземплярный метод только многопоточный, а однопоточный отдаёт результат лишь после полного завершения поиска.
По сравнению со стандартным поиском Windows ищет быстрее раза в 3 как минимум, правда там всё сразу: и файлы, и каталоги, но далеко не все, всякие системные в результатах не отображаются. Пару раз воспользовавшись стандартным поиском Windows, решил написать свой.

Добавлено через 5 минут

Не по теме:

Так скоро можно будет использовать библиотеку как бенчмарк, у кого поиск завершился быстрее, а компьютер гудел тише - тот и победил.

0
 Аватар для XhonoRjke
1 / 1 / 2
Регистрация: 02.09.2010
Сообщений: 125
19.03.2018, 22:25  [ТС]
Правда теперь с остановкой процесса поиска проблемы)
Говорит, что searcher значение равно null, хотя в самом public стоп работает. Странно

C#
1
2
3
4
5
6
        public FileSearcherMultiple searcher;
        private void button7_Click(object sender, EventArgs e)
        {
            button9.Visible = true;
            searcher.StopSearch();
        }
Добавлено через 1 минуту

Не по теме:

Был какой то сайт по продаже программ, библиотек и тд, поищите, может вам получится что-то с этого поиметь) главное красивую обложку сделать)

0
189 / 166 / 101
Регистрация: 14.03.2018
Сообщений: 426
19.03.2018, 22:31
Ну потому что ещё один экземпляр FileSearcherMultiple инициализируется где-то в методе, а это поле так и остаётся null.
Нужно найти где и убрать "FileSearcherMultiple".

Добавлено через 4 минуты

Не по теме:

Да у нас покупают не то, что хорошо работает, а что блестит. Это как с Iphone'ми и т.д.
Есть, конечно, Play Market, но это для Android, что-то аналогичное есть и для Windows, но там нужны готовые программы, а не компоненты, так что буду и сам программу писать, т.к. её хоть показать можно, а здесь только .dll файлик какой-то.


Ну так что, получилось отмену сделать?
1
 Аватар для XhonoRjke
1 / 1 / 2
Регистрация: 02.09.2010
Сообщений: 125
19.03.2018, 22:51  [ТС]
Только в основе поиска, а если убрать то и поиска не будет)
C#
1
2
3
4
5
6
7
            FileSearcherMultiple searcher = new FileSearcherMultiple(folders, (f) =>
            {
                foreach (var keyword in keywords)
                    if (Regex.IsMatch(f.Name, keyword))
                        return true;
                return false;
            }, tokenSource);
0
189 / 166 / 101
Регистрация: 14.03.2018
Сообщений: 426
19.03.2018, 22:57
Лучший ответ Сообщение было отмечено XhonoRjke как решение

Решение

Ну вот
C#
1
FileSearcherMultiple searcher = new FileSearcherMultiple( ...
нужно заменить на
C#
1
searcher = new FileSearcherMultiple( ...
Здесь должен инициализировать объект, но, чтобы он был доступен и другим методам, ссылка на него и выносится на уровень класса, делая его доступным во всём классе.

И ещё, обычно кнопки делают неактивными, а не невидимыми:
C#
1
button9.Enabled = false;
0
 Аватар для XhonoRjke
1 / 1 / 2
Регистрация: 02.09.2010
Сообщений: 125
19.03.2018, 23:10  [ТС]
У меня кнопки с наложением друг на друга) Поэтому надо убирать одну кнопку и ставить другую)
Возможно есть вариант и проще (а я уверен, что есть, просто заменяя функции кнопки и надпись), но я еще туповат, поэтому наверное позже займусь этим)
0
189 / 166 / 101
Регистрация: 14.03.2018
Сообщений: 426
19.03.2018, 23:23
Заработала операция отмены поиска?
1
 Аватар для XhonoRjke
1 / 1 / 2
Регистрация: 02.09.2010
Сообщений: 125
19.03.2018, 23:27  [ТС]
Да, все супер)
0
189 / 166 / 101
Регистрация: 14.03.2018
Сообщений: 426
03.05.2018, 09:53
Для всех сомневающихся в целесообразности использования библиотеки FastSearchLibrary, принципы применения которой рассматривались на страницах данной темы, рекомендую ознакомиться с поисковым инструментом, основанном на ней и применяющим её алгоритмы.
Описание расположено на GitHub: https://github.com/VladPVS/The-MIF
Загрузить можно здесь: https://github.com/VladPVS/The-MIF/releases
Существует как Portable версия, так и полноценная с установщиком.
0
2 / 2 / 0
Регистрация: 06.03.2017
Сообщений: 50
29.12.2021, 14:10
Добрый день.Ищет и падает
Миниатюры
Поиск по всем разделам диска  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.12.2021, 14:10

Поиск файлов по нескольким разделам
Помогите пожалуйста переделать код, чтобы поиск был по нескольким разделам с несколькими расширениями. Т.е. искало на диске A, B, C по...

Как обойти поиск по разделам?
Здравствуйте скажите пожалуйста как обойти поиск по разделам ?? изначально дет выборка по разделам и только потом идет поиск в этом...

Не могу разобраться с PostgreSQL. Поиск по всем таблицам и всем полям?
Вообщем у меня следующая проблема... подскажите как сделать поиск по во всех таблицах базы и во всех полях каждой таблицы? в моем...

Поиск по всем полям
Здравствуйте. Раньше вел базу таблицу в excel, но сейчас хочу перейти на Access, т.к. думаю больше удобства будет для заполнения и...

Поиск по всем запросам
Уважаемые Гуру, подскажите можно или нет организовать поиск поля по всем запросам бд. Если можно, то как это сделать?


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

Или воспользуйтесь поиском по форуму:
70
Ответ Создать тему
Новые блоги и статьи
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru