package com.itbuluoge.nio;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
public class GetChannel {
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
/*通过通道写入文件*/
FileChannel fc=new FileOutputStream("data.txt").getChannel();
fc.write(ByteBuffer.wrap("123456789".getBytes()));
fc.close();
/*读出文件*/
fc=new FileInputStream("data.txt").getChannel();
ByteBuffer buff=ByteBuffer.allocate(9);
fc.read(buff);
buff.flip();
while(buff.hasRemaining())
{
System.out.print((char)buff.get());
}
}
}
输出
这里有几个注意的点
第一,FileChannel类似与FileReader一样。
第二,FileChannel.read(ByteBuffer),将会读入一个ByteBuffer大小的数据块。
第三,在读取ByteBuffer的时候,需要设置ByteBuffer为读状态,也就是调用buff.flip();否则会无法读出数据。