首页 > 代码库 > FileChannel的用法

FileChannel的用法

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();否则会无法读出数据。

FileChannel的用法