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
的值将是一个新值(来自文件的下一行)。
我的旧方法(除了一般错误之外)需要很长时间才能从文件中获取多行,然后将参数存储到字典中。 本质上它是打开文件,一次抓取每一行,修改该行然后存储数据(行 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
的值将是一个新值(来自文件的下一行)。