有关StreamReader的Position问题

cocogi 2004-08-23 03:09:58
在用StreamReader读取资料时,我希望得到某行资料在文件中的位置,不过当我使用StreamReader.BaseStream.Position时,该position是缓存中的值,都是1K的倍数,根本不是该行资料在文件中的实际地址。不知应该如何解决该问题,谢谢!
private void test(string path)
{
long offset = 0;
string line = null;
StreamReader sr = new StreamReader(path, Encoding.GetEncoding("Shift-JIS"));

while((line = sr.ReadLine()) != null)
{
if (line.IndexOf("<a name=") != -1)
{
//资料在文件中的位置
offset = sr.BaseStream.Position;
continue;
}
if (line.IndexOf("</div>") != -1)
{
ParseRecord(offset);
return true;
}

if (line.IndexOf("</body>") != -1)
{
return false;
}
}
}

...全文
228 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
cocogi 2004-08-23
  • 打赏
  • 举报
回复
是偏移量,
比如说,某条记录的offset是0xF400;

sr.BaseStream.Seek(offset, SeekOrigin.Begin);

然后读取纪录

这样,我就不需要每次都从文件开头扫描了!
vzxq 2004-08-23
  • 打赏
  • 举报
回复
UP
thinkingforever 2004-08-23
  • 打赏
  • 举报
回复
你要的实际地址是在文件中的行数?

110,570

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧