一 文件拷贝例子
     FileInputStream fin = new FileInputStream( infile );
        FileOutputStream fout = new FileOutputStream( outfile );

        FileChannel fcin = fin.getChannel();
        FileChannel fcout = fout.getChannel();

        ByteBuffer buffer = ByteBuffer.allocate( 1024 );

         while ( true) {
           //clear() 方法重设缓冲区,使它可以接受读入的数据。
            buffer.clear();

             int r = fcin.read( buffer );

             if (r==-1) {
                 break;
            }
             // flip() 方法让缓冲区进行读写转化
            buffer.flip();

            fcout.write( buffer );
        }
    }

二、缓冲区的分片( slice : 类似于视图 可实现数据共享
    ByteBuffer buffer = ByteBuffer.allocate( 10 );
     for ( int i=0; i        buffer.put( ( byte)i );
     }
        
     buffer.position( 3 );
     buffer.limit( 7 );
     ByteBuffer slice = buffer.slice();
     //创建只读缓冲区设置
     ByteBuffer readOnlyBuffer =    buffer.asReadOnlyBuffer();
     buffer.put(( byte) -1);
     //readOnlyBuffer.put((byte) 5);    //ERROR: java.nio.ReadOnlyBufferException
     System.out.println( "====slice=========");
     while(slice.remaining()>0)
        System.out.print(    slice.get());
     System.out.println();
     System.out.println( "====readOnlyBuffer=========");
     while(readOnlyBuffer.remaining()>0)
        System.out.print(    readOnlyBuffer.get());
       /*
         * sysout:
              ====slice=========
      -1456
      ====readOnlyBuffer=========
      -1456
         */


三、分散、聚集
long read( ByteBuffer[] dsts ); long read( ByteBuffer[] dsts, int offset, int length )

          在 分散读取 中,通道依次填充每个缓冲区。填满一个缓冲区后,它就开始填充下一个。在某种意义上,缓冲区数组就像一个大缓冲区。
固定格式的数据结构可以利用这一特性读写
 四、 文件锁
/*获取排它锁需以写方式打开*/
  RandomAccessFile raf = new RandomAccessFile( "usefilelocks.txt", "rw" );
  FileChannel fc = raf.getChannel();
  FileLock lock = fc.lock( start, end, false );
   //在拥有锁之后,可以执行需要的任何操作
  lock.release(); //释放锁