2012-10-08 3 views
0

Je lis de here qu'une grande différence de Java IO et Java NIO est que dans le premier nous pouvons naviguer à partir des données seulement après la création d'un tampon (je pense avec, par exemple, un objet BufferedInputStreamer). Dans la seconde, les données lues dans un canal sont stockées directement dans un tampon.Java IO buffer navigation

S'il vous plaît, quelqu'un peut-il écrire des extraits de code qui montrent comment naviguer, aller-retour à partir d'un ancien tampon E/S et la même traduction avec la nouvelle API IO?

Merci.

+0

Les deux APIs sont significativement différentes et ne peuvent pas être traduits à seulement 1 à 1. Il est un tout autre api et méthode de travail. –

+0

Et ce que vous entendez par «naviguer à partir des données», c'est ce que tout le monde peut deviner. Précisez s'il vous plaît. – EJP

+0

Google est votre ami - il ya pleanty de matériel là-bas - comme ce dzone artikel http://java.dzone.com/articles/java-nio-vs-io – dngfng

Répondre

0

Exemple de saut de 1024, de lecture du suivant 1024 et de retour à 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();