在使用StreamReader时,如何指定在文件中开始读取的位置?

时间:2009-02-26 04:09:01

标签: c# streamreader

如何在使用StreamReader时指定在文件中开始阅读的位置?

我创建了一个streamreader对象以及一个文件流对象。创建两个对象后,如何控制StreamReader从文件开始读取的位置?

假设文件的内容如下,

// song list.
// junk info.
1. Song Name
2. Song Name
3. Song Name
4. Song Name
5. Song Name
6. Song Name

我如何控制流读取器来读取让我们说#2?另外,我怎么能控制在哪里使它停止读取类似#5的分隔符?

编辑:通过分隔符我的意思是,一种使StreamReader从('2。')开始读取的方法

3 个答案:

答案 0 :(得分:1)

如果文件包含新的行分隔符,您可以使用ReadLine一次读取一行。

因此,要从第2行开始阅读,您将读取第一行并丢弃,然后读取第5行直到第5行。

答案 1 :(得分:1)

您是否尝试将文件反序列化为某些内存中对象?如果是这样,您可能只想使用ReadLine或类似的东西解析整个文件,存储每一行​​,然后通过KeyValuePair<int, string>等数据结构访问它。

更新:好的...有了新信息,我认为你有两种选择。如果您在查找匹配项之前一直在阅读,可以Peek(),检查该字符是否是您要查找的字符,然后Read()。或者,如果您正在寻找一个固定位置,您可以简单地Read()多个字符并丢弃返回值。

如果您正在寻找复杂的分隔符,您可以将整行或甚至整个文件读入内存并使用Regular Expressions

希望有帮助...

答案 2 :(得分:0)

如果内容只是纯文本,那么你应该使用StreamReader的ReadLine方法。

http://msdn.microsoft.com/en-us/library/system.io.streamreader.readline.aspx

-Oisin