Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
25 / 19 / 7
Регистрация: 16.08.2013
Сообщений: 1,354
1

Чтение больших файлов (несколько гигабайт)

24.06.2018, 06:25. Показов 2675. Ответов 51
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени!
Нужно прочесть и пропарсить крупный файл весом в несколько гигабайт.
Подскажите как это сделать...
Заранее благодарю!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.06.2018, 06:25
Ответы с готовыми решениями:

Многопоточное чтение больших файлов
Привет всем! Подскажите пожалуйста как реализовать многопоточное чтение файла рамером 1gb и больше...

Чтение и обработка больших файлов
Нужно прочитать большой файл (несколько гигабайт), поделить содержимое файла на int'ы и посчитать...

Чтение запись файлов *.csv больших размеров
Доброго времени суток, форумчане! Нужно сделать: • прочитать данные таймсерий из файла...

Чтение в richtextbox больших файлов сопровождается большим потреблением памяти приложением
Здравствуйте! Вот мне не понятно: я читаю содержимое файла в RichTextBox (вес этого файла 207 мб)....

51
Эксперт .NET
12078 / 8387 / 1281
Регистрация: 21.01.2016
Сообщений: 31,595
25.06.2018, 10:12 41
Author24 — интернет-сервис помощи студентам
Pin1999, я не понимаю проблемы. Какие сложности скопировать всё содержимое на одну позицию вперёд? И что за число вы вставить хотите? Уж не количество ли элементов?
0
25 / 19 / 7
Регистрация: 16.08.2013
Сообщений: 1,354
25.06.2018, 10:39  [ТС] 42
Цитата Сообщение от Usaga Посмотреть сообщение
Ничего эта коллекция не удаляет.
Не удаляет.
Но смещение делает...
List.Insert(0, N);
Все числа смещаются и добавляется новое...
Осталось решить проблему того чтоб убрать все лишние.
Чтоб колво значений в List было конкретным.

Добавлено через 36 секунд
Цитата Сообщение от Usaga Посмотреть сообщение
Уж не количество ли элементов?
Эм... Зачем? O.o
Мне нужно просто добавлять новое значение с удалением самого старого, чтоб колво значений было всегда одинаково.
C#
1
2
{ 4, 6, 2, 7, 3 }
{ n, 4, 6, 2, 7 }
0
Эксперт .NET
12078 / 8387 / 1281
Регистрация: 21.01.2016
Сообщений: 31,595
25.06.2018, 10:43 43
Pin1999, вы кольцевой буфер изобретаете что ли?
0
25 / 19 / 7
Регистрация: 16.08.2013
Сообщений: 1,354
25.06.2018, 10:46  [ТС] 44
Usaga, Я сказал что мне нужно сделать.
Простой дайте ответ.
С массивами я делал это так:
Array.Copy(buffer, 0, buffer, 1, buffer.Length - 1);
0
Эксперт .NET
12078 / 8387 / 1281
Регистрация: 21.01.2016
Сообщений: 31,595
25.06.2018, 10:52 45
Pin1999, лучше сделайте нормально.
0
25 / 19 / 7
Регистрация: 16.08.2013
Сообщений: 1,354
25.06.2018, 11:05  [ТС] 46
Usaga, Это не то.
1) Очень много кода.
2) При чтении стирается.

Вот то что мне нужно и что правильно работает:
Чтение больших файлов (несколько гигабайт)
0
25 / 19 / 7
Регистрация: 16.08.2013
Сообщений: 1,354
25.06.2018, 11:11  [ТС] 47
-1 в while был лишний )
Чтение больших файлов (несколько гигабайт)
0
Эксперт .NET
12078 / 8387 / 1281
Регистрация: 21.01.2016
Сообщений: 31,595
25.06.2018, 11:13 48
Pin1999, возьмите за основу тот код по ссылке. Чтобы при чтении не стиралось ничего. А возня, что на скриншотах или с Array.Copy - фигня. Дерьмо делать я вам не стану помогать.
0
25 / 19 / 7
Регистрация: 16.08.2013
Сообщений: 1,354
25.06.2018, 12:47  [ТС] 49
Usaga, Ну во первых стирается значение если делать как по ссылке, там код править нужно.
Во вторых не фигня, а встроенная фича.
В третьих, возьню в две строки, которая при правильном использовании не нагружает код от слова совсем, возней называть - легкий бред.
В четвертых. Знаете как сделать лучше - покажите.
Код более чем в 5 строк не приму, ибо данная фишка того не стоит.
0
Эксперт .NET
12078 / 8387 / 1281
Регистрация: 21.01.2016
Сообщений: 31,595
25.06.2018, 12:47 50
Цитата Сообщение от Pin1999 Посмотреть сообщение
Код более чем в 5 строк не приму
Ух ты же ёлки-палки) Тогда удачи поговнокодить)

Не по теме:

Без обид

0
15 / 14 / 9
Регистрация: 21.11.2015
Сообщений: 86
26.06.2018, 17:50 51
Цитата Сообщение от Pin1999 Посмотреть сообщение
А List<List<long>> будет работать ?
А вы попробуйте и сами все узнаете.
Цитата Сообщение от Pin1999 Посмотреть сообщение
функция .Replase
Кликните здесь для просмотра всего текста
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
// Returns a StringBuilder with all instances of oldChar replaced with 
        // newChar.  The size of the StringBuilder is unchanged because we're only
        // replacing characters.  If startIndex and count are specified, we 
        // only replace characters in the range from startIndex to startIndex+count
        //
        public StringBuilder Replace(char oldChar, char newChar) {
            return Replace(oldChar, newChar, 0, Length);
        }
        public StringBuilder Replace(char oldChar, char newChar, int startIndex, int count) {
            Contract.Ensures(Contract.Result<StringBuilder>() != null);
 
            int currentLength = Length;
            if ((uint)startIndex > (uint)currentLength) {
                throw new ArgumentOutOfRangeException("startIndex", Environment.GetResourceString("ArgumentOutOfRange_Index"));
            }
 
            if (count < 0 || startIndex > currentLength - count) {
                throw new ArgumentOutOfRangeException("count", Environment.GetResourceString("ArgumentOutOfRange_Index"));
            }
 
            int endIndex = startIndex + count;
            StringBuilder chunk = this;
            for (; ; )
            {
                int endIndexInChunk = endIndex - chunk.m_ChunkOffset;
                int startIndexInChunk = startIndex - chunk.m_ChunkOffset;
                if (endIndexInChunk >= 0)
                {
                    int curInChunk = Math.Max(startIndexInChunk, 0);
                    int endInChunk = Math.Min(chunk.m_ChunkLength, endIndexInChunk);
                    while (curInChunk < endInChunk)
                    {
                        if (chunk.m_ChunkChars[curInChunk] == oldChar)
                            chunk.m_ChunkChars[curInChunk] = newChar;
                        curInChunk++;
                    }
                }
                if (startIndexInChunk >= 0)
                    break;
                chunk = chunk.m_ChunkPrevious;
            }
            return this;
        }
1
25 / 19 / 7
Регистрация: 16.08.2013
Сообщений: 1,354
10.07.2018, 04:54  [ТС] 52
Цитата Сообщение от _REVOLUTION_ Посмотреть сообщение
А вы попробуйте и сами все узнаете.
Попробовал, работает )
0
10.07.2018, 04:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.07.2018, 04:54
Помогаю со студенческими работами здесь

Многопоточное чтение больших файлов
Доброго времени суток! Нужен совет. Имеется, скажем, 10 текстовых файлов 1.txt;2.txt и т.д. и...

Чтение больших файлов Excel
пытаюсь считать данные с XLSX файла (500 000 строк). на MSDN наткнутся на статью каким образом это...

Чтение файлов больших размеров >1Гб
Товарищи, подскажите как прочитать файл размером больше 1Гб.. у меня при чтении оперативка...

Вычислить контрольную сумму файла в несколько гигабайт
Всем привет. Имеется какой-то файл в несколько гигабайт, или больше. Нужно вычислить для него...


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

Или воспользуйтесь поиском по форуму:
52
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru