Java NIO介绍
来源:互联网 发布:淘宝服务中心首页 编辑:程序博客网 时间:2024/06/04 18:24
ChannelBufferSelector
Java NIO 由Channel,Buffer和Selector核心部分组成,以下主要介绍这三个组件
一.Channel(通道)
传统IO中的stream是单向的,比如InputStream只能进行读取操作;OutputStream只能进行写操作。
Channel也是类似传统IO中的stream,但是有很大的区别,Channel是双向的,可读可写,提供从文件,网络读取数据的渠道。
常用的几个通道:
~FileChannel:可以从文件读,或者向文件写入数据
~SocketChannel:以TCP来向网络连接的两端读写数据
~ServerSocketChannel:监听客户端发起的TCP连接,并为每个TCP连接创建一个新的SocketChannel来进行数据的读写
~DatagramChannel:以UDP协议来向网络连接的两端读写数据
这些通道覆盖了UDP和TCP网络IO,以及文件IO。
二.Buffer(缓冲区)
读取或者写入的数据都必须经由Buffer。数据从Buffer写到Channel,从Channel读到Buffer
Buffer是一个顶层父类,这是一个抽象类,常用的子类:
~ByteBuffer
~IntBuffer
~CharBuffer
~DoubleBuffer
~FloatBuffer
~LongBuffer
~ShortBuffer
这些Buffer覆盖了可以通过IO发送的基本数据类型:byte,short,int,long,float,double和char
public class Test { public static void main(String[] args) throws IOException { File file = new File("data.txt"); FileOutputStream outputStream = new FileOutputStream(file); FileChannel channel = outputStream.getChannel(); ByteBuffer buffer = ByteBuffer.allocate(1024); String string = "java nio"; buffer.put(string.getBytes()); buffer.flip(); //此处必须要调用buffer的flip方法 channel.write(buffer); channel.close(); outputStream.close(); } }
上面的程序会向工程目录下面的data.txt写入字符串”java nio”
三.Selector(选择器)
Selector允许单线程处理多个Channel,使用Selector,需要向Selector注册Channel,然后调用它的select()方法。一旦发现注册的Channel有事件发生,便获取事件进行处理
- java nio介绍
- java的NIO介绍
- Java NIO介绍
- Java NIO介绍(一)
- Java NIO介绍(二)
- Java NIO介绍(三)
- Java NIO详细介绍
- Java NIO介绍
- Java NIO 入门介绍
- java-nio详细介绍
- Java NIO 介绍
- Java NIO笔记(一):NIO介绍
- NIO学习(一) java nio介绍
- Java NIO的简单介绍
- Java NIO详细介绍解析
- java nio SocketChannel (聊天功能)+NIO介绍
- Java NIO 第一章 介绍(1)
- Java NIO 第一章 介绍(2)
- linux课堂笔记----磁盘管理
- 红楼梦命名的艺术
- docker 使用
- Pixhawk之姿态解算篇(6)_Gradient Descent
- 安卓开发基础知识4(三星 、ARM 为大朋背书,详解VR一体机解决方案)
- Java NIO介绍
- swift学习笔记
- Docker构建并测试Web应用程序
- iOS开发笔记--使用blend改变图片颜色
- CodeForces 686BLittle Robber Girl's Zoo
- java并发编程知识要点总结
- 第16周 啊哈算法 炸弹人(两种算法注意对比)
- Mysql数据库语句大全
- Apache OpenSSL生成证书使用