Дописать текст в файл

240
23 февраля 2018, 15:19

Здраствуйте, я б хотел узнать, возможно ли записать данные в файл .txt формата в определенной позиции, что-то на примере бинарных файлов, где есть функция seek, которая, устанавливает указатель файла на какую-то позицию?

Answer 1

Текстовые файлы не предназначены для дописывания в середину. При попытке сделать это возникает множество проблем.

  1. Юникодные текстовые кодировки (utf-8 и utf-16), а также другие (например, ISO-2022) обладают переменным размером. Это значит, что для того, чтобы найти позицию символа по его номеру, вам придётся читать весь текст с самого начала файла: вы не можете по номеру символа установить номер байта.
  2. Даже если ваша кодировка случайно имеет фиксированную ширину, обычно запись необходимо производить не по номеру символа, а по номеру строки. Тут возникает дополнительная сложность в том, что строки имею разную длину, а также в том, что символы концов строк в текстовом файле могут быть разными: это символы с кодами 0x0A, 0x0D, их сочетание 0x0A 0x0D, а также менее известные 0x85, 0x2028 и 0x2029.
  3. Запись символов в файл с кодировкой переменного размера поверх других невозможна: если вы записываете однобайтный символ поверх 3-байтного, вы превращаете текст в невалидный. Точно так же, даже для кодировок фиксированного размера запись поверх других символов может уничтожить символы перевода строки.

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

READ ALSO
В потоке с переменной происходит какой-то бред!

В потоке с переменной происходит какой-то бред!

(recvd[0] - текст, recvd[1] - имя), это все работает в отдельном потоке

199
Не редактируются и не удаляются данные в БД, EF6 C# MVC

Не редактируются и не удаляются данные в БД, EF6 C# MVC

Добрый день! Подскажите как решить вопрос с записью в БД измененных данных или удалением ихДанные во view выводятся, в контроллер передаются,...

215
ASP.NET.После релиза пропадают папки

ASP.NET.После релиза пропадают папки

Добрый вечерЕсть проект на asp

214
Ошибки Сборки Microsoft Visual Studio 2017

Ошибки Сборки Microsoft Visual Studio 2017

Каковым бы код у меня ни был, в любом случае у меня после нескольких раз отладки в Microsoft Visual Studio 2017 пишет, что возникли некие "ошибки сборки",...

275