C#怎么用FileStream一行一行的读取文本

.Net技术 码拜 9年前 (2016-03-04) 2397次浏览
本人想读取一行文本,然后返回Position下标;  用FIleStream和StreamReader后,返回的下标不标准,所以就希望只用FileStream怎么才能读取一行数据,谢谢.
解决方案

70

引用 7 楼 threadroc 的回复:
Quote: 引用 6 楼 shingoscar 的回复:
Quote: 引用 4 楼 threadroc 的回复:

上面这个代码,返回的position是错误的,原因是StreamReader的原因,所以不能用StreamReader.

怎么错误了?

谢谢,本人试试你说的哪个,
据别人说,StreamReader里有缓存,本人理解的意思是,StreamReader会多读取几行,导致position超过你读取的行数了.
实际测貌似就是这样.

确实
那只能用StreamReader.ReadBlock读出一部分数据
找到换行符
然后结合Encoding来计算剩余的字节数就能确定位置了
另外假如文本本来就是utf8或ascii之类的编码,直接找0xa就行了

20

引用 9 楼 xuzuning 的回复:

StreamReader.ReadLine

都不知道楼猪搞那么多干嘛,逐行读取文本,不就是ReadLine和ReadAllLines吗,计算那个position有啥意义?非要获得这个值,直接把每行的字符数目累加不就得到了吗。
position,偏移量?那是二进制文件的指针位移才用到吧。

10

假如有分行,那么直接File.ReadLine就可以一行行读取,假如没分行,那么应该用byte[]方式来一段段读取

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明C#怎么用FileStream一行一行的读取文本
喜欢 (0)
[1034331897@qq.com]
分享 (0)