Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
0 / 0 / 0
Регистрация: 06.04.2012
Сообщений: 27
.NET 4.x

Прочесть и обработать текстовый файл "log.txt" в котором несколько миллионов строк

02.07.2014, 22:58. Показов 3527. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, уважаемые форумчане!
Необходимо прочесть и обработать текстовый файл "log.txt" в котором несколько миллионов строк.
Как осуществить все с максимальной скоростью? (Пробовал с обычным текстом - все нормально, а как c "log.txt" - так начинает виснуть)
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.07.2014, 22:58
Ответы с готовыми решениями:

Создать текстовый файл in.txt, куда записать несколько строк. Найти номер самой короткой строки
1.Создать текстовый файл in.txt, куда записать несколько строк. Найти номер самой короткой строки. Буду благодарен ..

Надо записать в текстовый файл log.txt строку
Добрый день! Делаю на простом аспе. У меня на локале все работает, на серваке не все. Т.е. Надо записать в текстовый файл...

Дан текстовый файл A.TXT. Сформировать новый файл из строк файла A.TXT, содержащих слово RUN
Дан текстовый файл A.TXT. Сформировать новый файл из строк файла A.TXT, содержащих слово RUN. Помогите пожалуйста. Очень срочно!!!

30
0 / 0 / 0
Регистрация: 06.04.2012
Сообщений: 27
03.07.2014, 20:49  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от emenem97 Посмотреть сообщение
gefestbrest, делайте через БД, как говорю, скорость значительно быстрее. Я частенько на работе обрабатываю файлы по 500-600 Мб текста и полей около 15, со сложными запросами за пару минут справляюсь.
Вы правы, через базу быстрее. Но, понимаете, нужно строго: программа-текстовый файл
0
4709 / 3662 / 857
Регистрация: 02.02.2013
Сообщений: 3,518
Записей в блоге: 2
05.07.2014, 17:35
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Было интересно сравнить различные варианты, и подготовил небольшой проект. Результат одного из расчетов показан на рисунке. Здесь вариант 1 – с использованием LINQ, вариант 2 – описанный выше. Возможно, рассмотреть и другие варианты, например Array.Find (во всех вариациях) и т.д.
Миниатюры
Прочесть и обработать текстовый файл "log.txt" в котором несколько миллионов строк  
Вложения
Тип файла: zip tstLog.zip (79.2 Кб, 14 просмотров)
6
Почетный модератор
 Аватар для Памирыч
23253 / 9167 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
05.07.2014, 18:14
Это LINQ тратит на обработку 0 сек?
Нехило.
Только с результатами какая-то муть...
0
4709 / 3662 / 857
Регистрация: 02.02.2013
Сообщений: 3,518
Записей в блоге: 2
05.07.2014, 19:51
Почему муть? Выбирается группа строк имеющих в составе указанный набор символов. Как понял именно этот результат и имел ввиду автор вопроса. Если нужно, что-то другое, то потребуется просто составить новый запрос.
0
Почетный модератор
 Аватар для Памирыч
23253 / 9167 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
05.07.2014, 20:41
ovva, по идее должен был выдаться один fileName_2, но это, полагаю, некритично, Вы правы, достаточно лишь переписать запрос. Подождем автора
0
0 / 0 / 0
Регистрация: 06.04.2012
Сообщений: 27
06.07.2014, 14:09  [ТС]
Все работает, на мой взгляд быстрее через 1 вариант. Автору проекта большое спасибо!
Теперь насчет сортировки результатов. Хотелось бы отсортировать результаты по дате:
file1 21.10.2013
file2 21.09.2013
file3 20.09.2013

Реализовал через следующий код:
VB.NET
1
2
3
4
5
 Dim str() As String = IO.File.ReadAllLines(pth, System.Text.Encoding.Default)     
        Dim sFind As String = TextBox6.Text
        Dim query = From s As String In str Where InStr(1, s, sFind) = 1 Order By s.Split()(1) Descending
        ListBox1.Items.Clear()
        ListBox1.Items.AddRange((query.ToArray))
Но получается, что сортируется не по всей дате, а только по числу дня. В чем ошибка?
0
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
06.07.2014, 15:15
Цитата Сообщение от gefestbrest Посмотреть сообщение
Order By s.Split()(1)
Вы сравниваете строки. Нужно вырезать часть строки с датой и временем, Привести строку к DateTime,
потом сортировать.


типа этого
VB.NET
1
2
     Dim query = From s As String In str Where InStr(1, s, sFind) = 1 Order By DateTime.ParseExact(s.Split()(1) & " " & s.Split()(2), "dd.MM.yyyy HH:mm:ss",
                                       System.Globalization.CultureInfo.InvariantCulture) Descending
2
06.07.2014, 15:16

Не по теме:

Как бы этот сплит не вернул прежнюю скорость выполнения :scratch:

0
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
06.07.2014, 16:48
Цитата Сообщение от Памирыч Посмотреть сообщение
Как бы этот сплит не вернул прежнюю скорость выполнения
проверил , ничего не поменялось. ну пусть предложат что получше.

SubString конечно лучше
VB.NET
1
2
3
        Dim query = From s As String In str _
                  Where InStr(1, s, sFind) = 1 _
                  Order By DateTime.ParseExact(s.Substring(s.IndexOf(" ") + 1), "dd.MM.yyyy HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture) Descending
или нет, лучше Regex
VB.NET
1
2
3
4
5
6
 Dim rgx As New Regex("\s(.*)", RegexOptions.IgnoreCase)
'
'
        Dim queryR = From s As String In Lines _
               Where InStr(1, s, sFind) = 1 _
              Order By DateTime.ParseExact(rgx.Match(s).Groups(1).Value, "dd.MM.yyyy HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture) Descending
0
4709 / 3662 / 857
Регистрация: 02.02.2013
Сообщений: 3,518
Записей в блоге: 2
06.07.2014, 21:18
Логичнее было бы сортировать уже сформированную выборку.

Добавлено через 58 минут
Добавлю возможный вариант кода
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
'...
Dim ss() As String = query.ToArray
Dim myComparer = New cmpDateTime()
Array.Sort(ss, myComparer)
ListBox1.Items.Clear()
ListBox1.Items.AddRange(ss)
'...
 
Public Class cmpDateTime
    Implements IComparer
    Function Compare(ByVal q1 As Object, ByVal q2 As Object) As Integer _
       Implements IComparer.Compare
        Dim s1() As String = DirectCast(q1, String).Split(Chr(32))
        Dim s2() As String = DirectCast(q2, String).Split(Chr(32))
        Dim d1 As Date = Convert.ToDateTime(s1(1) & Chr(32) & s1(2))
        Dim d2 As Date = Convert.ToDateTime(s2(1) & Chr(32) & s2(2))
        Dim t As Integer = Date.Compare(d1, d2)
        Return Date.Compare(d1, d2)
    End Function
End Class
1
4709 / 3662 / 857
Регистрация: 02.02.2013
Сообщений: 3,518
Записей в блоге: 2
08.07.2014, 15:23
М.б. кто-то обратил внимание, что в предложенном выше проекте, при любом числе строк, в текстовом поле Вариант/Обработка всегда 0. Это настораживает.
Если в код внести некоторые изменения
VB.NET
1
2
3
4
5
6
7
'...
Dim j As Integer
'...
Dim query = From s As String In str Where s.Contains(sFind) Select s
j = query.Count
tm.Stop()
'...
то получим более реальный результат. Дело в том, что здесь мы имеем дело с т.н. отложенным выполнением (http://msdn.microsoft.com/ru-r... 43859.aspx, Описание LINQ), т.е. запрос фактически не выполняется до момента первого обращения к объекту результату.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.07.2014, 15:23

дан текстовый файл input.txt, найти количество непустых строк в нем и записать в файл output.txt
помогите! дан текстовый файл input.txt, найти количество непустых строк в нем и записать в файл output.txt

Как при помощи FSO можно обработать такой (см.внизу)текстовый файл(1.txt) и вывести её на печать !?
Здравствуйте! Вопрос такой как при помощи FSO можно обработать такой (см.внизу)текстовый файл(1.txt) и вывести её на печать !???? ...

Имеется текстовый файл input.txt содержащий строки, переписать в текстовый файл filtered.txt каждое второе слово
Имеется текстовый файл input.txt содержащий строки, переписать в текстовый файл filtered.txt каждое второе слово. Функцию писать не...

Дан текстовый файл input.txt, в котором хранятся целые числа
Помогите решить задачу Дан текстовый файл input.txt, в котором хранятся целые числа. Создать упорядоченный по возрастанию список. За...

Две текстовый файл input.txt, в котором хранятся целые числа
Две текстовый файл input.txt, в котором хранятся целые числа. Создать упорядоченный по возрастанию список. Удалить первое чётное число....


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

Или воспользуйтесь поиском по форуму:
31
Ответ Создать тему
Новые блоги и статьи
GitHub Copilot в JetBrains: модель по умолчанию, Fix и контроль MCP
and_y87 12.10.2026
10 октября 2026 года GitHub обновил Copilot для JetBrains: добавил настройки стартовой модели, исправления из диагностики и управление автозапуском MCP. Поддержка IDE 2025. 1 прекращена — требуется. . .
GitHub Copilot в JetBrains: модель по умолчанию, Fix и контроль MCP
and_y87 12.10.2026
10 октября 2026 года GitHub обновил Copilot для JetBrains: добавил настройки стартовой модели, исправления из диагностики и управление автозапуском MCP. Поддержка IDE 2025. 1 прекращена — требуется. . .
День 5 из 28: Codex подсказывает следующий запрос
and_y87 12.10.2026
9 октября 2026 года OpenAI запустила бету Composer predictions — подсказок следующего сообщения в текущем диалоге Codex. Это помощь с формулировкой запроса, а не автоматическое продолжение задачи. . . .
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
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
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru