C#开始读取某一行中的文件

时间:2017-06-27 17:03:31

标签: c#

我需要处理一些文件(主要是日志文件),我必须在每一行使用正则表达式。我用

using (FileStream fs = File.Open("logs.txt", FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
using (BufferedStream bs = new BufferedStream(fs))
using (StreamReader sr = new StreamReader(bs))
{
    string line;
    while ((line = sr.ReadLine()) != null)
    {
       // use regex and add create new file..
    }
}

但是在日志中我有"名称更改"因此,如果有人更改了他们的名字,我需要再次处理日志,这次使用其他名称。我可以让它从某一行开始阅读,这样可以节省一些时间吗?

1 个答案:

答案 0 :(得分:1)

没有寻找某个的功能,但您可以寻找某个偏移(字节位置)。有File.ReadLines().Skip()方法,但它仍然读取.NET框架的current implementation中的所有行。

因此,当您停止处理文件时,请存储当前偏移量。如果你想稍后从那里拿起Seek到存储的偏移量(当然,如果我们可以安全地假设存储的偏移量之前文件的某些部分在两次传递之间没有变化,那么这只是一种有效的方法)。

Read this可能的实施。