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值会告诉我们多少字节被读进了缓冲区。

最新文章

  1. 创立一个网站的前前后后(起因,域名,云平台,备案,CDN等等)(1)
  2. ORA-12569: TNS: 包校验和失败解决方法一例
  3. Flume
  4. Nginx反向代理和负载均衡——个人配置
  5. python核心编程第六章练习6-12
  6. 获取body标签元素方法
  7. AD认证
  8. 使用downloadmanager调用系统的下载
  9. Android中对手机文件进行读写
  10. 【VBA研究】查找目录以下全部文件的名称
  11. JavaScript基础回顾
  12. IDEA热部署(一)---解析关键配置。
  13. 初学者如何迅速学习web前端开发
  14. (3)Linux的哲学思想
  15. spring 3.1.1 mvc HanderMapping源码
  16. 微信小程序实现简单的树形图treeview
  17. Linux ----> debian中环境的常见配置
  18. iOS开发--打印NSRange,CGRect等结构体
  19. 使用 requests 配置代理服务
  20. 《Lua程序设计》9.3 以协同程序实现迭代器 学习笔记

热门文章

  1. Scene View Navigation
  2. jfinal的ajax例子
  3. USB枚举过程(1)
  4. KMP应用http://acm.hdu.edu.cn/showproblem.php?pid=2594
  5. Codeforces 660 C. Hard Process (尺取)
  6. .net 学习资源(转)
  7. .NET/C#- EPPLUS DEMO
  8. android 动画属性(一)之Animation
  9. WatchKit App Submission Issues
  10. 将Excel另存为CSV格式文件