Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Поиск текста в файлах Добавлено: 20.03.09 12:28  

Автор вопроса:  Sergey
Народ, подскажите.
Как реализовать поиск слова в нескольких текстовых файлах, причем их более 1000, и вывести имя файла, в котором найдено совпадение.

Ответить

  Ответы Всего ответов: 12  

Номер ответа: 1
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #1
Добавлено: 20.03.09 13:01
В общем случае так:
1. Сделать перебор файлов. Если они в подкаталогах, то перебор рекурсией.
2. Сделать открытие файла - поиск информации - закрытие файла.
3. Соединить (1) и (2) и дополнить выводом результатов.

Но так как ты не указал язык, платформу и что искать (строку, по regexp, сигнатуру, другое..), то и указания по решению общие.

Ответить

Номер ответа: 2
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #2
Добавлено: 20.03.09 13:28
P.S. Пардон, в заголовке написано, что "Поиск текста в файлах".

Ответить

Номер ответа: 3
Автор ответа:
 Imperial Kashak



ICQ: 479713821 

Вопросов: 10
Ответов: 57
 Профиль | | #3 Добавлено: 20.03.09 13:51
Предлагаю, как и в первом ответе п.2, но имена файлов набить в массив дабы не потеряться потом, и при совпадении из массива (или даже из простого List) и вывести имя файла.
А вот поиск текста - открыть для считывания, считать файлик целиком (а не по символам или строкам, если большой окажется), а оттуда уже выискать стандартной функцией.

Ответить

Номер ответа: 4
Автор ответа:
 Sergey



Вопросов: 39
Ответов: 87
 Профиль | | #4 Добавлено: 20.03.09 14:06
Поиск слова в текстовом файле. Visual Basic 6. WinXP sp3.

Ответить

Номер ответа: 5
Автор ответа:
 fAndOrIn



Вопросов: 5
Ответов: 344
 Профиль | | #5 Добавлено: 20.03.09 14:24
  1. Function Find_Str(s_Search As String, Path As String, Mask As String) As String
  2. Dim S As String, s_Res As String
  3. Shell "cmd /c find /c """ & s_Search & """ " & Path & Mask & " > " & Path & s_Search & ".rep"
  4. On Error Resume Next
  5. Do
  6.   Err.Clear
  7.   GetAttr Path & s_Search & ".rep"
  8. Loop While Err
  9. On Error GoTo 0
  10. While FileLen(Path & s_Search & ".rep") = 0
  11. Wend
  12. Open Path & s_Search & ".rep" For Input As #1
  13.   While Not EOF(1)
  14.     Line Input #1, S
  15.     If S <> "" Then
  16.       If Right(S, 2) <> " 0" Then s_Res = s_Res + S + vbLf
  17.     End If
  18.   Wend
  19. Close #1
  20. Find_Str = s_Res
  21. End Function
Ищет слово s_Search в папке Path(\ в конце обязателен) в файлах заданных маской Mask.
Результат - строку типа
"---------- D:\TMP\1.TXT: 1
---------- D:\TMP\2.TXT: 1
---------- D:\TMP\3.TXT: 1
"
думаю, сможешь подогнать под свои требования.

Ответить

Номер ответа: 6
Автор ответа:
 Sergey



Вопросов: 39
Ответов: 87
 Профиль | | #6 Добавлено: 20.03.09 15:18
А если без командной строки? Русский текст таким образом не найдешь...

Ответить

Номер ответа: 7
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #7 Добавлено: 20.03.09 20:14
1000 текстовых файлов?
И какой их суммарный объем?

Ответить

Номер ответа: 8
Автор ответа:
 Sergey



Вопросов: 39
Ответов: 87
 Профиль | | #8 Добавлено: 23.03.09 09:29
Суммарный размер файлов более 100 Мб

Ответить

Номер ответа: 9
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #9 Добавлено: 23.03.09 14:41
Значит в среднем размер одного файла порядка 100 КБ. Не вижу необходимости заморачиваться с потоковым поиском, проще считывать содержимое файла в строку, затем через InStr искать вхождения.

Ответить

Номер ответа: 10
Автор ответа:
 Sergey



Вопросов: 39
Ответов: 87
 Профиль | | #10 Добавлено: 23.03.09 15:06
К примеру есть файлы 1.txt и 2.txt в директории C:\1\
Нужно найти слово Find.

Ответить

Номер ответа: 11
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #11 Добавлено: 23.03.09 16:00
Да даже если и 500кб.
Согласен с Брандом, последовательный перебор файлов, загрузка содержимого в строку и поиск вхождения даст приемлемые результаты.

Ответить

Номер ответа: 12
Автор ответа:
 Sergey



Вопросов: 39
Ответов: 87
 Профиль | | #12 Добавлено: 23.03.09 16:05
Подскажите, как это сделать...

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам