从文本文件中读取行,跳过读取行

本文关键字:读取 文本 文件 | 更新日期: 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