目录
1.NIO的概念
java.nio(java non-blocking IO),是指JDK1.4及以上版本里提供的新的api(New IO),为所有的原始类型(boolean类型除外)提供缓存支持的数据容器,使用它可以提供非阻塞式的高伸缩性网络。
1.1 三大组件
- buffer进行数据的存放
- Channel是各种通道对buffer的操作
- Selector选择使用哪个通道
1.1.1 缓冲区
1.1.2 Channel
1.1.3 Selector
2.代码演示--NIO读写文件内容
import java.io.FileNotFoundException;
import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
public class NIODemo {
public static void main(String[] args) throws Exception {
String path = Thread.currentThread().getContextClassLoader().getResource("").getPath();
path = path.substring(0,path.length()-4);
String fileName = path+"src/com/it/file/FileDemo02.java";
//创建raf对象,mode--"rw"可读可写
RandomAccessFile raf = new RandomAccessFile(fileName, "rw");
//开辟缓存空间
ByteBuffer buffer = ByteBuffer.allocate(64);
//读通道
FileChannel inChannel = raf.getChannel();
int n = 0;
while((n=inChannel.read(buffer))!=-1) {
//移动到缓存的第一个位置
buffer.flip();
//判断缓存中是否存在数据
while(buffer.hasRemaining()) {
//按字节读出,强转char显示
System.out.print((char)buffer.get());
}
buffer.clear();
}
raf.close();
}
}
部分执行结果如下图所示:[字节读出,中文部分会存在问题]