从文本文件中读取行,跳过读取行
本文关键字:读取 文本 文件 | 更新日期: 2023-09-27 18:02:10
我正在逐行阅读文本文件
StreamReader reader = new StreamReader(OpenFileDialog.OpenFile());
// Now I am passing this stream to backgroundworker
backgroundWorker1.DoWork += ((senderr,ee)=>
{
while ((reader.ReadLine()) != null)
{
string proxy = reader.ReadLine().Split(':').GetValue(0).ToString();
// here I am performing lengthy algo on each proxy (Takes 10 sec,s)
}
});
backgroundWorker1.RunWorkerAsync();
现在的问题是有些行没有被读取。它在读取一行后跳过每一行。
我已经读取了使用
的总行数File.ReadAllLines(file.FileName).Length
给出准确的行数。
我怀疑BackgroundWorker机制在我的代码中有一些问题,但不能弄清楚
在while ((reader.ReadLine()) != null)
中,您没有将结果分配给任何东西,因此它(在调用期间读取的行)将被跳过。
尝试一些变化:
string line = reader.ReadLine();
while (line != null)
{
/* Lengthy algorithm */
line = reader.ReadLine();
}
你可能更喜欢:
string line;
while ((line = r.ReadLine()) != null) {}
看起来不像是在readline()调用中将该行赋值给变量。你在读冗长算法的下一行吗?
根据你的更新,这肯定是你的问题。
你有这个:
...
while ((reader.ReadLine()) != null)
{
string proxy = reader.ReadLine().Split(':').GetValue(0).ToString();
...
});
你应该这样写:
...
string line;
while ((line = reader.ReadLine()) != null)
{
string proxy = line.Split(':').GetValue(0).ToString();
...
});
在while循环中reader.ReadLine()读取一行,并在下一次在字符串中proxy = reader.ReadLine().Split(':').GetValue(0).ToString();readline()读取下一行。没有将while循环中的读行赋值给任何变量。必须对while循环中读取的字符串(行)执行分割操作。
为什么不使用File.ReadLines(pathToFile);
?http://msdn.microsoft.com/en-us/library/dd383503.aspx