Если вы знаете точное положение байт символа (ов) вы хотите переписать, то вы можете сделать что-то вроде этого:
using (var writer = new StreamWriter(filePath))
{
writer.BaseStream.Seek(bytePos, SeekOrigin.Begin);
writer.Write('1');
}
Если вы не знаете точную позицию байта, то вы могли бы сделать что-то вроде этого:
using (var file = new FileStream(filePath, FileMode.Open))
using (var reader = new StreamReader(file))
using (var writer = new StreamWriter(file))
{
var openBracketCount = 0;
// Keep reading characters until the second open bracket is found.
do
{
var ch = Convert.ToChar(reader.Read());
if (ch == '[')
{
openBracketCount++;
}
} while (openBracketCount < 2);
writer.Write('1');
}
это несколько болезненного изменить один символ в середине потока с 'StreamWriter', особенно если вы только можете использовать' .Write' ... является ли перезаписывать весь файл вариант? –
Нужно ли это делать с помощью StreamWriter? Используйте 'FileStream', найдите текст, напишите в этой позиции, затем закройте поток. –
@SriramSakthivel, вы можете сделать оба. По умолчанию 'StreamWriter' пишет запись в' Stream', а по умолчанию - FileStream. Вы даже можете создать 'StreamReader' поверх того же' FileStream', чтобы найти правильную позицию. – jmcilhinney