Как переписать участок файла с помощью 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...
  • Вопрос задан
  • 242 просмотра
Пригласить эксперта
Ответы на вопрос 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);
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы