Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.84/25: Рейтинг темы: голосов - 25, средняя оценка - 4.84
0 / 0 / 1
Регистрация: 23.12.2012
Сообщений: 42

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

19.03.2013, 00:14. Показов 4994. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
написал поиск файлов по заданной маске(результат скидывает в txt файл),когда вводишь каталог все вроде норм , как только ищешь на диске то выскакивала ошибка о доступе system volume information я ее заексепшенил, но ща вылазит новый трабл непойму почему пишет streamwriter занят другим процессом вот код:
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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Text.RegularExpressions;
 
namespace лаба6
{
    class Program
    {  
  
      static public void podkatalog(DirectoryInfo dir1,Regex r,ref int a) {
            DirectoryInfo[] di = dir1.GetDirectories();
          // Console.WriteLine("\n\nкаталог " + dir1.Name);
            //if (di.Length != 0) Console.WriteLine("в нем");
          //  else Console.WriteLine("в нем нет папок");
            int m, i;
        if(a==0)  poisk(dir1, r, ref a);
            foreach (DirectoryInfo l in di) {  //Console.WriteLine(l); 
                poisk(l,r,ref a); }
            for ( i = 0; i < di.Length; i++)
            {
               
                podkatalog(di[i],r,ref a);
            }
            }
      
       static public void poisk(DirectoryInfo dir,Regex r,ref int a)
      {
          try
          {
              StreamWriter sw = new StreamWriter("d:\\1.txt", true, Encoding.Default);
              string filename;
 
              int l = 0;
              if (dir.Exists)
              {
                  DirectoryInfo[] katal = dir.GetDirectories();
                  FileInfo[] files = dir.GetFiles();
 
 
                  for (int i = 0; i < files.Length; i++)
                  {
                      filename = files[i].FullName;
                      if (r.IsMatch(filename))
                      {
                          l++; sw.WriteLine(" файл найден-{0}", files[i].FullName); //  Console.WriteLine(" файл найден-{0}", files[i].FullName); 
                          a++;
                      }
                  } sw.Close();
              }
          }
          catch (System.UnauthorizedAccessException )
          {
              Console.WriteLine("нету доступа к "+dir.FullName);
              
          }
       }
        
        static void Main(string[] args)
       {
           try
           {
               string name; int a = 0; char disk; DirectoryInfo dir; int q = 0,z=0;
               Console.WriteLine("Введите имя каталога или путь к нему к примеру c:\\музыка\\мое\");
               name = Console.ReadLine(); dir = new DirectoryInfo(@name);
               string Mask;Console.WriteLine("Введите имя искомого файла(можно не полностью,заменяя неизвестные символы символом*, к примеру *.doc");
                   Console.WriteLine("выведет все документы с расширением doc");
               Mask= Console.ReadLine();
               if (dir.Exists)
               {
                   
                   Mask = Mask.Replace(".", @"\." /* (".", "\\.") */);
                   // Заменяем ? на .
                   Mask = Mask.Replace("?", ".");
                   // Заменяем * на .*
                   Mask = Mask.Replace("*", ".*");
                   // Указываем, что требуется найти точное соответствие маске
                   Mask = "^" + Mask + "$";
 
                   Regex r = new Regex(Mask, RegexOptions.IgnoreCase);
 
                   Console.WriteLine("вести поиск в каталоге нажмите 1 ");
                   Console.WriteLine("вести поиск в каталоге и подкаталогах нажмите 2 ");
                   z = int.Parse(Console.ReadLine());
                   if(z==1)poisk(dir, r, ref a);
                    if(z==2)podkatalog(dir, r,ref a);
               }
               else
               { Console.WriteLine("Такого каталога или диска нету"); Environment.Exit(0); }
               Console.WriteLine("найдено файлов-" + a);
               if (a == 0)
               {
                   StreamWriter sw = new StreamWriter("d:\\1.txt");
                   sw.WriteLine("файл не найден");
                   sw.Close();
               }
               else
               {
                   // File.AppendText("d:\\1.txt").WriteLine("Найдено {0} файлов",a);
                   StreamWriter sw = new StreamWriter("d:\\1.txt", true, Encoding.Default);
                   sw.WriteLine("найдено файлов-" + a);
                   Console.WriteLine("файлы добавлены в папку d:\\1.txt");
                   sw.Close();
               }
           }
           catch (System.FormatException)
           {
               Console.WriteLine("ошибка ввода");
           }
 
        }
      }
    }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.03.2013, 00:14
Ответы с готовыми решениями:

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

Поиск файлов по маске
Имеется имя файла, например : файл.txt Как определить нет ли в папке таких же файлов, только с индексами, наприер: файл (1).txt , файл...

Поиск файлов по маске
Надо найти файлы по маске типа: 123456. txt, 1243567.txt, 56745.txt , 1123119.txt и т.д. Пробовал применять такую маску: .txt не...

3
 Аватар для ITL
284 / 255 / 73
Регистрация: 17.07.2012
Сообщений: 618
19.03.2013, 00:48
Поменяй ту строчку на:
C#
1
StreamWriter sw = new StreamWriter(@"D:\1.txt", true, Encoding.Default);
1
0 / 0 / 1
Регистрация: 23.12.2012
Сообщений: 42
19.03.2013, 01:27  [ТС]
я по-другому сделал не знаю правильно нет: все поля вызова конструкторов заексепшнил try{} catch{return;}
оно тупо все исключения пропускает
0
 Аватар для ITL
284 / 255 / 73
Регистрация: 17.07.2012
Сообщений: 618
19.03.2013, 01:33
Тогда в файл записываться не будет ничего. И вообще это очень плохая практика с пустым кетчем.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.03.2013, 01:33
Помогаю со студенческими работами здесь

Поиск двух файлов по маске
Всем привет, не получается осуществить поиск по маске 2 файлов. Использую IEnumerable&lt;string&gt; files =...

Как осуществить поиск файлов по маске
Как искать файлы по маске файлов в listview (файлы) для файлового менеджера на c# чтобы пользователь вводил например .txt и ему все .txt...

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

Поиск файлов по маске с игнорированием закрытых для доступа папок
Привет. Написал вот так, а оно доходит до папки system volume information и ошибка - Отказано в доступе по пути &quot;d:\System Volume...

Поиск и перенос файлов по заданной маске в указанные папки
$src = 'D:\ready' $dst = 'D:\test\хот' function write-log ($message) { &quot;$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru