Java IO缓冲区导航

时间:2012-10-08 12:08:08

标签: java io

我从here读到,与Java IO和Java NIO的一个重大区别是,首先我们只能在创建缓冲区后从数据导航(我想,例如,BufferedInputStreamer对象) )。 在第二个中,从通道读取的数据直接存储在缓冲区中。

请问,是否有人可以编写一些代码片段来说明如何从旧的IO缓冲区来回导航,并使用新的IO API进行相同的转换?

感谢。

1 个答案:

答案 0 :(得分:0)

跳过1024的示例,读取下一个1024,然后回到0;

NIO:

int i=1024;
Path p = Paths.get("./","file.txt");
SeekableByteChannel sbc = Files.newByteChannel(p, StandardOpenOption.READ);
sbc.position((long)i);
ByteBuffer bf = ByteBuffer.allocate(i);
sbc.read(bf);
byte[] b = bf.array();
sbc.position(0L);

IO:

int i=1024;
File f = new File("./file.txt");
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(f));
bis.mark(i*2);
bis.skip((long)i);
byte[] b = new byte[i];
bis.read(byte[] b);
bis.reset();