Задать вопрос

Как переписать участок файла с помощью streamwriter?

Я знаю позицию в которой необходимо провести замену и пытаюсь записывать так:

_file = new FileStream(_filePath, FileMode.Create, FileAccess.Write);
_writer = new StreamWriter(_file);
//...
_writer.BaseStream.Seek(offset, SeekOrigin.Begin);
_writer.Write(size.Value);
_writer.BaseStream.Seek(currentPosition, SeekOrigin.Begin);


Позиция меняется корректно, но _writer упорно записывает в конец файла.
Что я делаю не так?

P.S. На многих форумах именно такое решение и предлагалось.
Пример: stackoverflow.com/questions/8243122/how-to-write-d...
  • Вопрос задан
  • 247 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • OTUS
    C# Developer. Professional
    6 месяцев
    Далее
  • Ulearn.me
    Основы программирования на примере C#. Часть 1
    1 неделя
    Далее
  • Ulearn.me
    Основы программирования на примере C#. Часть 2
    1 неделя
    Далее
Пригласить эксперта
Ответы на вопрос 1
FunkEinstein
@FunkEinstein Автор вопроса
StreamWriter имеет может и задокументированное, но неожиданное для меня поведение.

Решение "в тупую":
_writer.Flush();
_file.Seek(offset, SeekOrigin.Begin);
_writer = new StreamWriter(_file);

_writer.Write(size.Value);
_writer.Flush();

_file.Seek(currentPosition, SeekOrigin.Begin);
_writer = new StreamWriter(_file);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы