首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

资料中行级偏移量的一种获取方式

2012-08-25 
文件中行级偏移量的一种获取方式下面所描述的内容是根据实际需要对BufferedReader的小改进,并提供一张简图

文件中行级偏移量的一种获取方式
  下面所描述的内容是根据实际需要对BufferedReader的小改进,并提供一张简图来说明所做的修改。如有更方便的方式请回帖或联系dennyy99@gmail.com给予明示,谢谢


      如果需要对文件内容建索引,就可能需要每行数据的起始偏移量。下图是文件内容索引的简明结构,目标是为了引出我们对行级偏移量的需求



    我们平时都是用BufferedReader来读取行内容,如果在它的基础上能提供行级偏移量岂不更好嘛,因此动手对BufferedReader的源码做了简单修改。因为BufferedReader是不断有buffer去原始的input stream获取内容,然后逐一遍历buffer来组织成行。如果想获得行的起始处,就得追踪BufferedReader对行的构造过程。我尝试过这样做,但出现过一些计算错误的问题。所以反向行之,先获取Reader读完一行后,它的行尾位置(line end position)。用行尾位置减去行的长度不就是行的起始偏移量吗?事实证明这样是一种简便有效的方式。详情见下图



    附件是修改后的代码,命名为PositionAwareReader,它的使用方式示例如下




    获取行起始偏移量之后就可以做一些好玩的事情了。上面提到的索引是一方面,也可以实现如linux命令"grep 'keyword' file -B 10 -A 10" 这样的行为,其它的使用方式正在探索中。

点此下载


热点排行