BufferSlice.java 955 B

1234567891011121314151617181920212223242526272829303132333435
  1. package cn.hhj.nio.buffer;
  2. import java.nio.ByteBuffer;
  3. /**
  4. * 缓冲区分片
  5. */
  6. public class BufferSlice {
  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. buffer.position( 3 );
  15. buffer.limit( 7 );
  16. ByteBuffer slice = buffer.slice();
  17. // 改变子缓冲区的内容
  18. for (int i=0; i<slice.capacity(); ++i) {
  19. byte b = slice.get( i );
  20. b *= 10;
  21. slice.put( i, b );
  22. }
  23. buffer.position( 0 );
  24. buffer.limit( buffer.capacity() );
  25. while (buffer.remaining()>0) {
  26. System.out.println( buffer.get() );
  27. }
  28. }
  29. }