2012-10-08 147 views
0

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

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

谢谢。

+0

两个阿比的是显著不同,并且不能只被翻译1比1。这是一个完全不同的API和工作的方法。 –

+0

你的意思是“从数据导航”是任何人的猜测。请澄清。 – EJP

+0

谷歌是你的朋友 - 有很多材料 - 比如这个dzone artikel http://java.dzone.com/articles/java-nio-vs-io – dngfng

回答

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();