FileChannel的基本使用

package com.taobao.nio.channel;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;

/**
 * FileChannel的基本使用。
 */
public class AcquireChannel {
     public static void main(String[] args) throws Exception {
         // 根据FileOutputStream获得通道FileChannel
         FileChannel channel = new FileOutputStream("D:/a.txt").getChannel();
         // 字节方式写入
         channel.write(ByteBuffer.wrap("hello, NIO world in java!".getBytes()));
         channel.close();
         
         // 根据FileInputStream获得通道FileChannel 
         channel = new FileInputStream("D:/a.txt").getChannel();
         // ByteBuffer分配空间,16个字节
         // 这里需要知道  byte是1字节, short和char是2字节,int和float是4字节 
         //                          long和double是8字节   1byte=8bit 。  基本只是还是必须记住的。
         ByteBuffer buff = ByteBuffer.allocate(16);
         // 字节数组数据装入buff,
         channel.read(buff);
         // 反转此缓冲区
         buff.flip();
         // 逐个输出,因为分配了16,所以输出的时候只能输出hello, NIO world,剩下的
         // 因为空间关系被截断。
         while(buff.hasRemaining()){
             System.out.print((char)buff.get());
         }
         channel.close();
     }
}

来源:http://www.cnblogs.com/alipayhutu/archive/2012/05/09/2492037.html

原文地址:https://www.cnblogs.com/blogsme/p/2855179.html