Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 02.01.2018
Сообщений: 12

Работа с чтением записью(форматированием) больших текстовых файлов

12.01.2019, 22:17. Показов 2365. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть текстовый большой текстовый файл (к примеру 20гб(текст к примеру какая то книга, разбитая по строкам)), 2 задачи:
1я найти количество вхождений заданной строки к примеру (string) "а вас, Штирлиц, попрошу остаться"
2я заменить одну строку на какую либо другую к примеру "а вас, Штирлиц, попрошу остаться" на "Штирлиц, я вас задержу ещё на минуту, — остановил его Мюллер" при этом строки могут быть разной длины.
С первым все просто тут можно построчно считывать и считать, а вот со второй вопрос как (возможно построчно) перезаписать файл не открывая его?

C#
1
2
3
4
             using (System.IO.StreamReader reader = System.IO.File.OpenText(@"D:\test.txt"))
            {
                str = reader.ReadToEnd();
            }
Такой вариант не подходит т.к. по условию оперативки меньше чем весит файл
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.01.2019, 22:17
Ответы с готовыми решениями:

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

Разработка программ с чтением и записью файлов различных типов
Изменить программу (программа написана ниже), организовав чтение исходных данных с текстового файла dan.txt. Результат работы программы...

Разработка программ с чтением и записью файлов разных типов
В файле содержится сведения о промышленных товарах: номер отдела, название товара, стоимость, размер. В новый файл переписать информацию о...

9
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,574
12.01.2019, 22:21
Лучший ответ Сообщение было отмечено firstkot как решение

Решение

Для второго варианта просто создаете новый файл, а старый удаляете.
1
0 / 0 / 0
Регистрация: 02.01.2018
Сообщений: 12
12.01.2019, 22:24  [ТС]
Ну это только в самом крайнем случае т.к. из - за необходимости замены 1 слова придется пересоздавать файл ~20гб((
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,574
12.01.2019, 22:27
Если слово в начале файла, то в любом случае это придется делать. Т.к. просто так сдвинуть данные вы не можете.
0
0 / 0 / 0
Регистрация: 02.01.2018
Сообщений: 12
12.01.2019, 22:33  [ТС]
По данным Книги рекордов Гиннесса,
высота самой большой в мире печатной книги –
2 метра 30 сантиметров, а ширина 1 метр 52 сантиметра.
Общий вес этой книги, состоящей из 112 страниц, равен 60 килограммам.
Сегодня создано всего одиннадцать её экземпляров.
Книгу может заказать любой желающий, оплатив тридцать тысяч долларов.

А если к примеру текст форматирован таким образом, могу ли я заменить 1ну строку не перезаписывая файл?
К примеру
высота самой большой в мире печатной книги – --->>> высота книги
Или зная № символа переводить каретку и побитово перезаписывать?
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,574
12.01.2019, 22:45
Нет, как минимум придется перезаписать часть файла начиная с места, где происходит замена.
Без перезаписи возможно заменить только если длинна старой и новой строки в байтах совпадает.
0
0 / 0 / 0
Регистрация: 02.01.2018
Сообщений: 12
12.01.2019, 22:50  [ТС]
а если строки одинаковой длины то перезапись идет через BinaryWriter?
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,574
12.01.2019, 22:52
Цитата Сообщение от firstkot Посмотреть сообщение
а если строки одинаковой длины то перезапись идет через BinaryWriter?
Да через что угодно, лишь бы байты могло записывать в указанную позицию, FileStream тот же...
1
0 / 0 / 0
Регистрация: 02.01.2018
Сообщений: 12
13.01.2019, 00:41  [ТС]
Подскажите пожалуйста а можно из файла удалить только часть, например первые 40 байт?
0
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
16.01.2019, 11:40
firstkot, Вам уже два раза обьяснили, что нельзя, а вы все торгуетесь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.01.2019, 11:40
Помогаю со студенческими работами здесь

Дайте, пожалуйста несколько примеров работы с чтением и записью файлов
Требуются следующие шаблоны: 1) Прочесть файл построчно/ целиком и записать это в переменную. 2) Запись в файл построчно/ целиком/...

Работа с чтением/записью бинарного файла
Здравствуйте. Хочу создать бинарный файл, туда записать число. Затем его закрыть, заново открыть и прочитать из него записанное число в...

Загрузка больших текстовых файлов
Подскажите пожалуйста,как можно спроецировать файл в память (текстовый) и обработать его (необходимо удалить все дубликаты строк)...

Парсинг больших текстовых файлов
Добрый день! В общем столкнулся с задачей отпарсить текстовик на 4 миллиона строк (в примере код для пары тысяч строк). ...

Редактор больших текстовых файлов
Посоветуйте пожалуйста текстовый редактор, который без проблем открывает большие файлы (2 - 3Гб).. мне в этом плане понравился Ultraedit,...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru