0

我从这里读到,Java IO 和 Java NIO 的一个很大区别在于,首先我们只能在创建缓冲区之后从数据中导航(例如,我认为使用 BufferedInputStreamer 对象)。在第二种情况下,从通道读取的数据直接存储在缓冲区中。

请问,任何人都可以编写一些代码片段来展示如何从旧的 IO 缓冲区来回导航并使用新的 IO API 进行相同的翻译吗?

谢谢。

4

1 回答 1

0

跳过1024,读取下一个1024,寻回0的例子;

蔚来:

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();
于 2015-03-05T19:30:56.277 回答