channels java_Java NIO channels
Java NIO channels
Java 中的channel和流有如下的区别
既可以从通道中读取数据,又可以写数据到通道。但流的读写通常是单向的。
通道可以异步地读写。
通道中的数据总是要先读到一个Buffer,或者总是要从一个Buffer中写入。
正如上面所说,从通道读取数据到缓冲区,从缓冲区写入数据到通道。如下图所示:
image
Java NIO: Channels read data into Buffers, and Buffers write data into Channels
Channel 的实现
下面是channel的重要的实现
FileChannel
DatagramChannel
SocketChannel
ServerSocketChannel
FileChannel是从file中读取或者是写入到file中去
DatagramChannel可以通过UDP协议从网络中读取或者是写入
SocketChannel可以通过TCP协议从网络中写入或者是读取
ServerSocketChannel可以监听新进来的TCP连接,像Web服务器那样。对每一个新进来的连接都会创建一个SocketChannel。
基本的 Channel 示例
下面是一个使用FileChannel读取数据到Buffer中的示例:
RandomAccessFile aFile = new RandomAccessFile("data/nio-data.txt", "rw");
FileChannel inChannel = aFile.getChannel();
ByteBuffer buf = ByteBuffer.allocate(48);
int bytesRead = inChannel.read(buf);
while (bytesRead != -1) {
System.out.println("Read " + bytesRead);
buf.flip();
while(buf.hasRemaining()){
System.out.print((char) buf.get());
}
buf.clear();
bytesRead = inChannel.read(buf);
}
aFile.close();
注意 buf.flip() 的调用,首先读取数据到Buffer,然后反转Buffer,接着再从Buffer中读取数据。下一节会深入讲解Buffer的更多细节。
channels java_Java NIO channels相关推荐
- channels java_java.nio.channels.overlappingfilelockexception 怎么解决
展开全部 可能是环境变量配置错误,接下来就来介绍解决办法. 延展阅读: 1.首62616964757a686964616fe78988e69d8331333365646263先打开我们的开发工具mye ...
- sparkStreaming+kafka SparkException: java.nio.channels.ClosedChannelException异常报错
在运行sparkStreaming+kafka的时候报错 java io报错, 如果broker-list的端口不对或者kafka服务端未启动,会遇到以下错误: Exception in thread ...
- 【Hadoop】java.io.IOException: Failed on local exception: java.nio.channels.ClosedByInterruptException
查看日志中的报错信息如下: java.io.IOException: Failed on local exception: java.nio.channels.ClosedByInterruptExc ...
- java.nio.channels.UnresolvedAddressException
RocketMq和Redis的netty版本冲突 报错信息如下 排查原因 解决办法 分析 报错信息如下 java.nio.channels.UnresolvedAddressException - U ...
- java.nio.channels.UnresolvedAddressException: null [运行storm-0.9.4集群时]
[问题描述] 在运行storm集群时,发现kafkaspout不能消费kafka的数据,查看stormUI,没有发现有什么异常,但是手动消费kafka的数据又是正确的,通过一步一步问题排查,最好定位到 ...
- Spark2 Failed to send RPC 5346982634 to /ns1:58312: java.nio.channels.ClosedChannelException
将spark任务运行与yarn上出现以下错误: scala> 18/11/21 16:20:11 ERROR cluster.YarnClientSchedulerBackend: Yarn a ...
- nio的应用 java_Java NIO的理解和应用
Java NIO是一种基于通道和缓冲区的I/O方式,已经被广泛的应用,成为解决高并发与大量连接和I/O处理问题的有效方式. Java NIO相关组件 Java NIO主要有三个核心部分组成,分别是:C ...
- 【NIO】解读 java.nio.channels.Selector
目录 Part 1. What's Selector? Part 2. Why Selector? Part 3. How to use Selector? 1) Create Selector 2) ...
- Netty 中 IOException: Connection reset by peer 与 java.nio.channels.ClosedChannelException: null
最近发现系统中出现了很多 IOException: Connection reset by peer 与 ClosedChannelException: null 深入看了看代码, 做了些测试, 发现 ...
最新文章
- nodejs安装及环境配置(windows系统)
- Spring Boot 配置文件密码加密方法
- ip地址个数的计算,二进制与 8 比特
- tea 加密密钥生成_加密密钥生成需要的是熵的良好来源
- c语言程序基本设计,C语言程序的设计基本6.ppt
- 基于springboot vue h5 手机商城源码
- CSDN日报20170612 ——《程序员,感觉技术停滞了怎么办?》
- B+树索引实战:全值匹配查询
- PLC1200 模拟量采集
- Xmind 8 pro 软件破解版
- 这篇文章记录平时学习、项目中遇到的问题(未解决的居多)
- 石墨文档支持的几种markdown格式
- matplotlib之pyplot模块之标题(title()和suptitle())
- 《古月ROS探索总结》学习笔记2
- 华为2015年实习招聘机试
- zr 10联测 day1
- win7你没有权限查看或编辑这个对象的权限设置
- 歌星大奖赛,评分系统
- Linux - 内存管理
- 1027: 判断水仙花数 Java
热门文章
- 用9*9的卷积核分类9*9的图片
- 用反向传导分子模型去计算基团的定位效应
- ado批量执行sql mysql_C++ 使用 ADO 批量操作数据库
- 【STM32】PWM 输出实验代码详解
- 【数理知识】《矩阵论》方保镕老师-第4章-赋范线性空间与矩阵范数
- 【Matlab 控制】矩阵、图像操作基础
- C++改变基类成员在派生类中的访问属性
- Swift UITableView嵌套UICollectionView点击事件冲突(点击事件穿透)
- Android 中文 API (19) —— TwoLineListItem
- Linux下安装配置NTP时间同步服务器