说我需要读取整数的巨大二进制文件,一个方便的方法是:
FileInputStream fi = new FileInputStream(file);
BufferedInputStream bi = new BufferedInputStream( fi);
DataInputStream di =new DataInputStream(bi);
但现在说我必须从第n个整数开始读取一个巨大的块。 到目前为止,我自己实现了一种缓冲:
RandomAccessFile fp=new RandomAccessFile(file);
fp.seek(position);
byte[] buff= new byte[len];
fp.read(buff, 0, len);
ByteArrayInputStream bIn = new ByteArrayInputStream(buff);
DataInputStream dIn= new DataInputStream(bIn);
现在我可以解析buff
中的数据,处理它然后读取下一个块。
我想知道是否有一些我可以使用的标准缓冲区对象。我想简化我的代码而不是自己处理缓冲。
欢迎任何提示。 雅各布
答案 0 :(得分:2)
看看NIO。例如,java.nio.MappedByteBuffer。
答案 1 :(得分:2)
在用bi和di包装之前先用fi.skip(位置)开始。当位置足够大时,基础流实际上会调用寻找。