Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.62/55: Рейтинг темы: голосов - 55, средняя оценка - 4.62
1 / 1 / 1
Регистрация: 15.11.2013
Сообщений: 79

Считывание данных из очень больших файлов

22.02.2014, 19:41. Показов 10821. Ответов 36
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Собственно вопрос: чем(как?) построчно считать текстовый файл(ну точнее csv файл) который весит почти 9 гб?
Второй вопрос: можно ли как-нибудь в цикле динамически менять путь к считываемому файлу? Т.е. у меня есть 25 файлов и из них хочу построчно считать данные. Хотелось бы не писать 25 разных цилов/ не запускать 25 раз программу, каждый раз вручную меняя путь.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.02.2014, 19:41
Ответы с готовыми решениями:

Считывание больших файлов и их обработка
Помогите с задачей 1) Имеются несколько txt файлов (больших размеров), в которых содержатся табельный номер, ФИО, место работы,...

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

Обработка очень больших файлов
У меня есть большие текстовые документы, состоящие из 10 и 100 тыс символов каждый. Эти документы нужно обработать и сохранить в...

36
192 / 199 / 82
Регистрация: 11.04.2013
Сообщений: 1,086
25.02.2014, 08:16
Студворк — интернет-сервис помощи студентам
Вот с этого и надо было начинать, что имеем котировки Фьючерсных контрактов на обыкновенные акции ОАО "Газпром"

Полный код контракта GAZR-3.13
Краткий код GZH3

Теперь как сделать чтобы твой фаил размером 9Гб в памяти ничего не весил

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
//GZH3;GAZR-3.13;14800.00000;25;2013-01-08 10:00:00:00.067;679857248;0
        string str = "GZH3;GAZR-3.13;14800.00000;25;2013-01-08 10:00:00:00.067;679857248;0";
 
        struct kotirovki
        {
        
        //GZH3;GAZR-3.13;   - это 13(26) байт  кода
        // а с помощью enum сокращаем до байта
        enum kodekontract : byte {GZH3, и т.д.};
        
        //14800.00000  
        // если загнать в float вместо 11 байт будет всего 4
        float price;
 
        //25 - хз че такое такое
 
        //2013-01-08 10:00:00:00.067
        // эту штуку можно  представить в виде количество тиков например от 2010г 
 
        uint date;
 
 
        public void kotirovki(string str)
        {
        string [] temp = str.Split(';');
        price=float.Parse(temp[2]);
 
        date = ....
        //.....
        }
        }
И т.д. и т.п в итоге после того как этот каток проедет по файлу твой фаил даже 1Гб весить не будет
0
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
25.02.2014, 08:57
Ой.... А не проще было сделать так: считываем строку из первого файла, ищем нужную дату из второго, вычитаем, пишем в третий. Не вижу смысла переганять в бинарник, всё равно придется работать по частям. С сортировкой занятный вопрос конечно... Думаю после получения третьего файла просто нужно будет создать некий массив структур {номер_строки; дата_вермя}. После уже его отсортировать и уже на основе имеющихся данных создать четвертый финальный файл. Правда по файлу придется побегать...
0
192 / 199 / 82
Регистрация: 11.04.2013
Сообщений: 1,086
25.02.2014, 09:11
Цитата Сообщение от Wolfdp Посмотреть сообщение
С сортировкой занятный вопрос конечно...
Вот я и предлагаю поэтому загнать этот фаил в колекцию List<struct kotirovki> , в память влезет и второй фаил в такой же коллекции, обработать в памяти и выдать готовый , а не плодить 500 файлов
0
 Аватар для Kruds
708 / 708 / 226
Регистрация: 04.03.2013
Сообщений: 1,384
25.02.2014, 09:39
Кто-то в теме упоминал БД, на мой взгляд это удобнее таких плясок с бубномфайлом.
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
25.02.2014, 09:46
Цитата Сообщение от EVG-1980 Посмотреть сообщение
не плодить 500 файлов
конечно, ведь гораздо лучше лопатить файл размером 9 гигов... а оперативки хватит? следите за тем, что происходит в теме.
Я считаю, что такие логи нужно вести по принципу "на каждый день отдельный файл"
0
192 / 199 / 82
Регистрация: 11.04.2013
Сообщений: 1,086
25.02.2014, 10:02
nio, если грамотно пропарсить и сложить все в структуру не будет там и гига оперативки занимать
0
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
25.02.2014, 11:18
Цитата Сообщение от EVG-1980 Посмотреть сообщение
если грамотно пропарсить и сложить все в структуру не будет там и гига оперативки занимать
Как хорошо, что сегодня каждый может себе позволить 4Гб ОЗУ. )

Вообще-то, если нужно один раз прогнать этот ужас через ПК и забыть, то можно просто в наглую построчно считать в структуры и уже оперировать с ними, молясь чтобы оперативки хватило. Если же плановая месячная документация, то...

Цитата Сообщение от nio Посмотреть сообщение
на каждый день отдельный файл
0
25.02.2014, 11:40

Не по теме:

Я меня стоит 16Гб озу в 32 разрядной системе уже полгода, лень переустанавливать :)

0
1 / 1 / 1
Регистрация: 15.11.2013
Сообщений: 79
26.02.2014, 19:41  [ТС]
Подскажите пожалуйста ещё: как считывать файлы построчно асинхронно? т.е. например
1файл 2 файл
1 1
2 1
3 1
4 1
5 2
6 2
и т.д. кол-во повторений может быть любым.
Т.е. мне нужно реализовать независимое друг от друга движение по файлам.
0
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
26.02.2014, 20:06
Цитата Сообщение от Sean_mephi Посмотреть сообщение
Т.е. мне нужно реализовать независимое друг от друга движение по файлам.
C#
1
2
3
4
using (var reader1 = new StreamReader(@"D:\Nya\Temp\smile.mp4"))
{
    using (var reader2 = new StreamReader(@"D:\Nya\Temp\smile.mp4"))
    {
Для асинхроных действий можно использовать Thread.

P.S. Подозреваю что автор имел в виду другое, но ответил как понял >_<
0
1 / 1 / 1
Регистрация: 15.11.2013
Сообщений: 79
26.02.2014, 20:13  [ТС]
Wolfdp, чтение разных файлов. Т.е. не в один цикл бежать по одинаковым строчкам.
0
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9674 / 4826 / 763
Регистрация: 17.04.2012
Сообщений: 9,665
Записей в блоге: 14
26.02.2014, 20:41
Цитата Сообщение от Sean_mephi Посмотреть сообщение
нужно реализовать независимое друг от друга движение по файлам.
Так независимое или одновременное чтение разных строк?
0
1 / 1 / 1
Регистрация: 15.11.2013
Сообщений: 79
26.02.2014, 20:50  [ТС]
tezaurismosis, нужно независимо двигаться по 2 файлам. Т.е. на каждой итерации в первом файле(в нём строчек больше, чем во втором) точно сдвигаемся на 1 строчку, а во втором может сдвигаемся а может и нет( зависит от моего условия)
0
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9674 / 4826 / 763
Регистрация: 17.04.2012
Сообщений: 9,665
Записей в блоге: 14
26.02.2014, 21:10
Цитата Сообщение от Sean_mephi Посмотреть сообщение
зависит от моего условия
Записываете это условие в цикле и двигаетесь с каждым разом по первому файлу - по 1 строке, а по 2му - может двигаться, а может нет.
0
1 / 1 / 1
Регистрация: 15.11.2013
Сообщений: 79
26.02.2014, 21:51  [ТС]
tezaurismosis, у меня с реализацией проблема. Сам этого никак написать не могу.

Добавлено через 7 минут
Я пишу через StreamReader. Может есть ещё какие-нибудь способы прочитать файл, а я не знаю этого?
0
192 / 199 / 82
Регистрация: 11.04.2013
Сообщений: 1,086
27.02.2014, 07:28
Sean_mephi, Что бы тебе помогли с реализацией ты должен четко сформулировать задачу , привести пример данных которые имеешь, привести пример данных что ты хочешь получить!

А так это переливание пустого в порожнее и уже на 4 страницы...
1
1 / 1 / 1
Регистрация: 15.11.2013
Сообщений: 79
27.02.2014, 12:38  [ТС]
EVG-1980, нужно построить график спреда (GAZR-SBRF). Есть 2 файла с котировками (газпром и сбербанк). Тиков сбербанка почти 2 раза больше. Если время тика сбербанка не совпадает с временем тика газпрома, то нужно взять последнее известно время газпрома. Вычитается цена сбербанка из цены газпрома.

Потом по этим данным нужно построить график зависимсоти величины спреда от даты. Период - весь год.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.02.2014, 12:38

Открытие очень больших AVI файлов
Суть в том, что имеется .avi файл размером больше 1GB(открытие .avi делаю библиотекой AForge).В AForge есть класс: AVIReader Он...

Заливка данных больших файлов
Всем привет. Есть файл формата *.txt, разделитель столбцов /tab, значение в &quot;&quot;. Заливаю данные в таблицу (очень долго = 400 ГБ), где все...

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

Сохранение больших файлов в базе данных
Как сохранять большие файлы в базе данных? У меня есть программа, которая предоставляет возможность загрузить файлы с компьютера в...

Автоматизированный cбор данных из больших (до 100мБ) текстовых файлов
Помогите решить проблему( на VB встроенном в эксель,наверно): написать макрос для автоматизированного cбора данных из больших (до...


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

Или воспользуйтесь поиском по форуму:
37
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
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
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение 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