1、准备知识介绍
NIO模式的三大组件:Selector/选择器、Channel/通道、Buffer/缓存的关系图如下所示:
- 每个线程对应一个Selector,每个Selector对应多个Channer,每个Channerl对应一个Buffer,每个Buffer对应一个客户端程序。
- 缓冲区/Buffer的实质是一个可以读写数据的内存块,底层是容器对象/数组。可以使用flip()方法进行读写切换。
- Buffer是一个顶层抽象父类,有很多实现子类
2、本地文件写数据
FileChannal主要用作对本地文件进行IO操作,常见的方法如下
public int read(ByteBuffer dst) //从通道读取数据并放进缓冲求
public int wirte(ByteBuffer src) //把缓冲区的数据写到通道中
public long transferFrom(ReadableByteChanne src,long position,long count) //从目标通道中复制数据到当前通道
public long transferTo(long position,long count,WritableByteChannel target) //把数据从当前通道赋值给目标通道
要求使用ByteBuffer和FileChannel,将"成电吴彦祖"写道file001.txt中,如果不存在该文件就新建一个
package NIO;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
public class NIOFileChannel001 {
public static void main(String