ReadOnlyBuffer.java 795 B

123456789101112131415161718192021222324252627282930313233
  1. package cn.hhj.nio.buffer;
  2. import java.nio.*;
  3. /**
  4. * 只读缓冲区
  5. */
  6. public class ReadOnlyBuffer {
  7. static public void main( String args[] ) throws Exception {
  8. ByteBuffer buffer = ByteBuffer.allocate( 10 );
  9. // 缓冲区中的数据0-9
  10. for (int i=0; i<buffer.capacity(); ++i) {
  11. buffer.put( (byte)i );
  12. }
  13. // 创建只读缓冲区
  14. ByteBuffer readonly = buffer.asReadOnlyBuffer();
  15. // 改变原缓冲区的内容
  16. for (int i=0; i<buffer.capacity(); ++i) {
  17. byte b = buffer.get( i );
  18. b *= 10;
  19. buffer.put( i, b );
  20. }
  21. readonly.position(0);
  22. readonly.limit(buffer.capacity());
  23. // 只读缓冲区的内容也随之改变
  24. while (readonly.remaining()>0) {
  25. System.out.println( readonly.get());
  26. }
  27. }
  28. }