java NIO Channel 学习总结
来源:互联网 发布:聚划算淘宝商城手表 编辑:程序博客网 时间:2024/06/05 21:50
Java NIO 的核心组成部分:
1.Channels2.Buffers3.Selectors
Java NIO的通道类的功能似流,但又有些不同:
- 既可以从通道中读取数据,又可以写数据到通道。但流的读写通常是单向的。
- 通道可以异步地读写。
- 通道中的数据总是要先读到一个Buffer,或者总是要从一个Buffer中写入。
Java NIO中最重要的通道的实现包含四个
FileChannel 从文件中读写数据。DatagramChannel 能通过UDP读写网络中的数据。SocketChannel 能通过TCP读写网络中的数据。ServerSocketChannel可以监听新进来的TCP连接。对每一个新进来的连接都会创建一个SocketChannel。
FileChannel 示例
import java.io.FileNotFoundException;import java.io.IOException;import java.io.RandomAccessFile;import java.nio.ByteBuffer;import java.nio.channels.FileChannel;public class ChannelExample { public static void main(String[] args){ try { RandomAccessFile aFile = new RandomAccessFile("D:\\logs\\download.info.2017-10-26.log", "rw"); FileChannel inChannel = aFile.getChannel(); ByteBuffer buf = ByteBuffer.allocate(48); int bytesRead = inChannel.read(buf); while (bytesRead != -1){ System.out.println("Read " + bytesRead); //flip()之后,读/写指针position指到缓冲区头部,并且设置了最多只能读出之前写入的数据长度 buf.flip(); //返回剩余的可用长度 while(buf.hasRemaining()){ System.out.print((char) buf.get()); } //读入channel中的数据 buf.clear(); bytesRead = inChannel.read(buf); } aFile.close(); } catch (IOException e) { e.printStackTrace(); } }}
程序首先将文件与channel关联,随后将channel中的数据读入buffer之中,用户最后读取buffer进而得到文件中数据。
参考链接
- http://blog.csdn.net/hbtj_1216/article/details/53129588
- http://ifeve.com/overview/
- https://www.cnblogs.com/ysw-go/p/5974372.html
阅读全文
0 0
- java NIO Channel 学习总结
- java学习-NIO(三)Channel
- Java NIO之Channel学习
- Java NIO学习5(通道Channel)
- java nio编程学习笔记(2)--channel
- Java NIO Channel
- Java NIO Socket Channel
- Java NIO(3-Channel)
- Java NIO Channel
- Java NIO笔记 Channel
- Java NIO Channel
- Java NIO--Channel
- java NIO Channel
- Java NIO (二) Channel
- Java NIO Channel
- Java NIO Channel
- java NIO-Channel
- Java NIO Channel
- 算法 day 01
- 条形码控件Aspose.BarCode 12月新版17.12发布 | 附下载
- 润乾报表(V4)用ajax实现关联单元格自动填充
- 系统架构改进--多系统用户整合
- Spring事务管理只对出现运行期异常进行回滚
- java NIO Channel 学习总结
- fprintf用法解析
- Android 软键盘的显示和隐藏
- Linux与网络
- 远程连接MYSQL提示Host is not allowed to connect to this MySQL server
- 漫画:什么是单例模式?(整合版)
- 十进制转换成字符串
- vue单页应用之创建和运行
- 基于Drools决策表的通用规则集设计