可以读取或写入缓冲区。为了在写模式和读模式之间切换模式,我们flip()在缓冲区上使用了方法调用。
在写模式与读模式之间进行切换时,您应该了解的几件事。缓冲器具有capacity,position和limit属性。该capacity会一直在写或读模式相同。但是position和limit会在每种模式下存储不同的信息。
在写模式下,limit它将等于容量,但在读模式下,limit将等于写入最后数据的最后位置。在position对写入模式地步的数据将在缓冲区中写入。调用flip()方法时,position将设置为0,limit将设置为的最后一个值position。
package org.nhooo.example.io; import java.nio.CharBuffer; public class BufferFlip { public static void main(String[] args) { CharBuffer buffer = CharBuffer.allocate(1024); System.out.println("capacity = " + buffer.capacity()); System.out.println("position = " + buffer.position()); System.out.println("limit = " + buffer.limit()); buffer.put("Java NIO Programming"); System.out.println("capacity = " + buffer.capacity()); System.out.println("position = " + buffer.position()); System.out.println("limit = " + buffer.limit()); buffer.flip(); System.out.println("capacity = " + buffer.capacity()); System.out.println("position = " + buffer.position()); System.out.println("limit = " + buffer.limit()); } }
该程序将打印以下结果:
capacity = 1024 position = 0 limit = 1024 capacity = 1024 position = 20 limit = 1024 capacity = 1024 position = 0 limit = 20