Java nio(二)
一、各种缓冲区:
所有的缓冲区都继承了Buffer,Buffer类定义了所有缓冲区共有的基本特征,缓冲区存储了制定类型的元素序列有:ByteBuffer、CharBuffer、ShortBuffer、IntBuffer、LongBuffer、FloatBuffer、DoubleBuffer。
我们需要知道这些基本类型占用存储空间与Byte的对应关系:
char 2 bytes,int 4 bytes,double 8 bytes
二、我们看看Buffer三个重要的概念以及他们之间的关系:
capacity 所能存方特定类型值得最大数量
limit 第一个不能读取或写入的索引位置
position 下一个要读取或写入的缓冲区索引位置
理解这三者的关系是对缓冲区操作的关键:
新创建的一个缓冲区,position=0,limit=capacity
我们可以通过position(int newPosition)和limit(int newLimit)来调整position和limit的值。显然0 =< position =< limit =< capacity,所以我们在设置这个位置
需要小心,以满足这个条件,一般如果同时设置limit和position的时候,下面代码是一个
安全的方法:
public static void testReadViewBufferWritten()throws Exception{ ByteBuffer bb = ByteBuffer.allocate(100); FileInputStream fis = new FileInputStream(new File("D:/a.txt")); FileChannel inputChannel = fis.getChannel(); inputChannel.read(bb); bb.flip(); CharBuffer cb = bb.asCharBuffer(); for(int i = 0; i < cb.limit();i++) System.out.print(cb.charAt(i)); fis.close(); } 2 楼 youfengkai 2011-10-04 CharBuffer : 字符缓冲区