nio channel几个API学习(一)

来源:互联网 发布:2016网络营销策划方案 编辑:程序博客网 时间:2024/06/05 08:43

花了些时间,参考了并发编程网和java nio 一书 ,对nio进行了片面的了解,废话不多说,直接上代码

package Demo1;import java.io.RandomAccessFile;import java.nio.ByteBuffer;import java.nio.channels.FileChannel;public class FileChannalDemo {public static void main(String[] args) {try {RandomAccessFile aFile = new RandomAccessFile("D:\\2.txt", "rw");FileChannel inChannel = aFile.getChannel();ByteBuffer buf = ByteBuffer.allocate(48);//创建一个可存储空间为48字节的缓冲区//CharBuffer cuf = CharBuffer.allocate(48);创建一个可存储空间为48字符的缓冲区//从Channel写入到bufferint bytesRead = inChannel.read(buf);while(bytesRead !=-1 ){System.out.println("read:"+bytesRead);buf.flip();//翻译为翻转,但理解更偏向于重置,将limit重置为poistion,将poistion重置为0;while(buf.hasRemaining()){System.out.println((char)buf.get()+"===");//从缓冲区中读入一个字节}buf.clear();//一旦读完Buffer中的数据,需要让Buffer准备好再次被写入。可以通过clear()或compact()方法来完成。//如果调用的是clear()方法,position将被设回0,limit被设置成 capacity的值。换句话说,Buffer 被清空了。Buffer中的数据并未清除,只是这些标记告诉我们可以从哪里开始往Buffer里写数据。//如果Buffer中有一些未读的数据,调用clear()方法,数据将“被遗忘”,意味着不再有任何标记会告诉你哪些数据被读过,哪些还没有。bytesRead = inChannel.read(buf);}aFile.close();//RandomAccessFile可以关闭飞空通道} catch (Exception e) {e.printStackTrace();}}}


阅读全文
0 0
原创粉丝点击