昨天帮同学弄个程序,好久没碰java了。

这个程序要在特定位置读取1.7万条DNA序列,从三千多万条之中读。

然后就用了reader,我记得reader有个override可以从特定位置开始读文件。查了下JDK说明文档。

 

reader.read(char[] cbuf, int off, int len)        //将字符读入数组的某一部分。 

 

这个函数可以从文件中第off(偏置)位置开始读,读len个长度的数据到cbuf中。
然后出现了一个问题,就是我要读的数据太大了,超过了int型的off。
于是想,哎呀,完了,那就一个字节一个字节读下去吧,后面想想太慢,毕竟这个程序就要运行1.7W*三千万*400(每次读400个,而且要读的位置可能重叠)的数据量
后来突然发现一个叫做skip的语句..
reader.skip(long n)//这个就是说让你跳一部分语句来读..

 

然后就把两个拼在一起使用:
reader.skip(要跳多少个);
reader.read(存入字符串,0(因为已经跳好了,所以这里不需要再多了),400);

 

由此,实现了这个read,写的比较低端,只是为了记录一下。
posted on 2013-04-03 01:11  ImpGeek  阅读(278)  评论(0编辑  收藏  举报