如何使用字符串覆盖文件中的每一行

时间:2014-02-06 09:14:36

标签: c# filestream overwrite

我有一个字符串模式,必须从文件的第二行到第207行覆盖。

目前我有this method来覆盖整个模式中的每个0,1或空格(每行有207行,每行3000个)。

using (var fileStream = File.Open(filePath + fileName, FileMode.OpenOrCreate, FileAccess.Write))
        {
            var minLength = Math.Min(pattern.Length, fileStream.Length);
            Console.WriteLine("Started overwriting file " + fileName);
            for (var i = 0; i < minLength; i++)
            {
                fileStream.Position = i;

                if (pattern[i] == '0')
                {
                    fileStream.WriteByte(byteCharZero);
                }
                else if (pattern[i] == '1')
                {
                    fileStream.WriteByte(byteCharOne);
                }
                else if (pattern[i] == ' ')
                {
                    fileStream.WriteByte(byteCharSpace);
                }
            }
        }

这种方法就像一个魅力,直到第110行。然后它跳回一个空间,在第161行,它再次做同样的事情。这样,模式就不在正确的位置。

我不知道为什么会这样,但我会以另一种方式解决问题:

现在我想用一行包含一个字符串模式覆盖第二行到第207行。如何在上述方法中完成覆盖单独的linse?

1 个答案:

答案 0 :(得分:1)

你在谈论“线”,所以要检查的第一件事就是行尾。也许,线路终端通常是CRLF,除了近线161,它只是CR或LF?一个不同的行结束肯定会说明一个接一个。