C# 读取txt文件第一行

string s;
sr = new StreamReader(fs, Encoding.GetEncoding("gb2312"));
s = sr.ReadLine();
s = sr.ReadLine();
s = sr.ReadLine();
sr.BaseStream.Seek(0, SeekOrigin.Begin);//重新读取第一行,这句不行
s = sr.ReadLine();

小弟初学C#,求如何重新开始读第一行,网上找了半天没找到

sr.BaseStream.Seek(0, SeekOrigin.Begin);这一句之所以不生效,是因为
StreamReader 可能缓冲输入,使得基础流的位置与 StreamReader 的位置不匹配。也就是说,你改变基础流的位置,对sr的当前位置是无效的。

解决该问题的方法:
方法一:
如果文件不大,可以考虑使用sr.ReadToEnd(),将内容读入内存,再处理。这样灵活性会很大。
方法二:
采用非缓存的方式,直接通过sr.BaseStream去访问,这样灵活性不如前者,但因为这样读取方式是非缓存的,适用于大文件。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-07-04
string[] lines = File.ReadAllLines("D:/test.txt", Encoding.Default);
lines[0] = Regex.Replace(lines[0], "\\s+", " ");//把至少一个空格或tab转化为一个空格
lines[0]即为第一行内容
第2个回答  2010-09-01
你可以在txt文本里面设置每行的后面加个Tab空格。。然后截取第一个Tab前的字符。。。不就靠以来嘛。。
自己去尝试把。
第3个回答  2010-09-01
首先读取所有行的数据存到数组中,然后就可以访问数组中任一行数据了。
第4个回答  2010-09-01
sr.BaseStream.Seek(0, SeekOrigin.Begin)
改为
sr.position = 0
相似回答