Java基础知识强化之IO流笔记82:NIO之 Pipe(管道)
2024-09-02 08:13:57
1. Java NIO 管道是2个线程之间的单向数据连接。Pipe
有一个source通道和一个sink通道。数据会被写到sink通道,从source通道读取。
这里是Pipe原理的图示:
2. Pipe使用
(1)创建管道
通过Pipe.open()
方法打开管道。例如:
Pipe pipe = Pipe.open();
(2)向管道写数据
要向管道写数据,需要访问sink通道。像这样:
Pipe.SinkChannel sinkChannel = pipe.sink();
通过调用SinkChannel的write()
方法,将数据写入SinkChannel,像这样:
String newData = "New String to write to file..." + System.currentTimeMillis();
ByteBuffer buf = ByteBuffer.allocate(48);
buf.clear();
buf.put(newData.getBytes()); buf.flip(); while(buf.hasRemaining()) {
sinkChannel.write(buf);
}
(3)从管道读取数据
从读取管道的数据,需要访问source通道,像这样:
Pipe.SourceChannel sourceChannel = pipe.source();
调用source通道的read()
方法来读取数据,像这样:
ByteBuffer buf = ByteBuffer.allocate(48); int bytesRead = sourceChannel.read(buf);
read()
方法返回的int值会告诉我们多少字节被读进了缓冲区。
最新文章
- 创立一个网站的前前后后(起因,域名,云平台,备案,CDN等等)(1)
- ORA-12569: TNS: 包校验和失败解决方法一例
- Flume
- Nginx反向代理和负载均衡——个人配置
- python核心编程第六章练习6-12
- 获取body标签元素方法
- AD认证
- 使用downloadmanager调用系统的下载
- Android中对手机文件进行读写
- 【VBA研究】查找目录以下全部文件的名称
- JavaScript基础回顾
- IDEA热部署(一)---解析关键配置。
- 初学者如何迅速学习web前端开发
- (3)Linux的哲学思想
- spring 3.1.1 mvc HanderMapping源码
- 微信小程序实现简单的树形图treeview
- Linux ---->; debian中环境的常见配置
- iOS开发--打印NSRange,CGRect等结构体
- 使用 requests 配置代理服务
- 《Lua程序设计》9.3 以协同程序实现迭代器 学习笔记
热门文章
- Scene View Navigation
- jfinal的ajax例子
- USB枚举过程(1)
- KMP应用http://acm.hdu.edu.cn/showproblem.php?pid=2594
- Codeforces 660 C. Hard Process (尺取)
- .net 学习资源(转)
- .NET/C#- EPPLUS DEMO
- android 动画属性(一)之Animation
- WatchKit App Submission Issues
- 将Excel另存为CSV格式文件