Streamreader多次读取同一行C#

Streamreader reading the same line multiple times C#

我的旧方法(除了一般错误之外)需要很长时间才能从文件中获取多行,然后将参数存储到字典中。 本质上它是打开文件,一次抓取每一行,修改该行然后存储数据(行 pos 和该行的第一个元素(减号)“>”)关闭文件然后重复。

for (int i = 0; i < linecount - 1; i += 2)
{
    string currentline = File.ReadLines 
    (datafile).Skip(i).Take(1).First();
    string[] splitline = currentline.Split(' ');
    string filenumber = splitline[0].Trim('>');
}   for (int i = 0; i < linecount - 1; i += 2)

你需要在while循环中读取下一行,否则循环体总是分析第一行(这就是为什么会出现字典错误)并且永远不存在:

while (line != null)
{
    // your current code here
    line = sr.ReadLine();
}

问题是您只读取了文件的第一行。要解决此问题,您需要确保在循环的每次迭代中都调用 sr.ReadLine() 。这看起来像:

using (StreamReader sr = File.OpenText(datafile))
{
    string line = sr.ReadLine();
    while (line != null)
    {
        count = count ++;
        if (count % 2 == 0)
        {
            string[] splitline = line.Split(' ');
            string datanumber = splitline[0].Trim('>');
            index.Add(datanumber, count);
        }

        line = sr.ReadLine();
    }
}

这意味着在每次迭代中,line 的值将是一个新值(来自文件的下一行)。