@RKey_Prog

Как в C# изменить одну строку в файле?

Как в c# изменить определенную строку в файле через FileStream?
  • Вопрос задан
  • 1533 просмотра
Решения вопроса 1
twobomb
@twobomb
Накидал пример для однобайтовой кодировки.

rewriteLineText(3, @"D:\mytext.txt", "Новое значение");//№ линии, путь к файлу, значение

        static void rewriteLineText(int rewriteLine,string path,string str){

            FileStream fs = new FileStream(path, FileMode.Open);
            var buff = new byte[1];
            int byteStart = rewriteLine == 1 ? 0 : -1, byteEnd = -1;

            for (int i = 0, line = 1; i < fs.Length; i++){
                fs.Read(buff, 0, 1);
                if (buff[0] == 10){//10 - перенос строки
                    if (line == rewriteLine)
                    {
                        byteEnd = i;
                        break;
                    }
                    line++;
                    if (line == rewriteLine)
                        byteStart = i + 1;
                }
                if (i == fs.Length - 1)
                    byteEnd = i;
            }
            if (byteStart == -1 || byteEnd == -1)
                return;
            var strByte = Encoding.UTF8.GetBytes(str);
            fs.Position = byteEnd;
            var tailBuff = new byte[fs.Length - byteEnd];
            fs.Read(tailBuff, 0, (int)(fs.Length - byteEnd));
            fs.Position = byteStart;
            fs.Write(strByte, 0, strByte.Length);
            fs.Write(tailBuff, 0, tailBuff.Length);
            fs.SetLength(byteStart + strByte.Length + tailBuff.Length);
            fs.Close();
        }
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
yarosroman
@yarosroman Куратор тега C#
C# the best
Читаем файл в строку File.ReadAllText, потом в строке через String.Replace заменяем строку и потом File.WriteAllText
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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