0

使用 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.') 开始读取的方法

4

3 回答 3

1

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

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

于 2009-02-26T04:11:36.673 回答
1

您是否正在尝试将文件反序列化为某个内存对象?如果是这样,您可能希望简单地以 usingReadLine或类似的方式解析整个文件,存储每一行​​,然后通过数据结构(例如KeyValuePair<int, string>.

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

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

希望有帮助...

于 2009-02-26T04:13:29.260 回答
0

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

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

-Oisin

于 2009-02-26T04:13:07.107 回答