Java Nio 十三、Java NIO Pipe(管道)
2016-04-16 21:00
375 查看
最后更新时间:2014-06-23
一个Java NIO管道是在两个线程之间的单向的数据连接。一个管道有一个源通道和一个下沉通道。你写数据到一个下沉的通道。这个数据然后从源通道中读取。
这里有一个管道原则的示意图:
创建一个管道
你可以通过调用Pipe.open()方法打开一个管道,像下面这样:
写入一个管道
为了写入一个管道,你需要访问这个下沉的通道,像下面这样:
通过调用write()方法写入一个SinkChannel,像这样:
从一个管道中读
为了从一个管道中读取数据,你需要访问这个源通道,像下面这样:
为了从源通道中读取数据,你可以调用read()方法,像下面这样:
通过read方法返回的int值会告诉你有多少字节读到了buffer中。
翻译地址:http://tutorials.jenkov.com/java-nio/pipe.html
一个Java NIO管道是在两个线程之间的单向的数据连接。一个管道有一个源通道和一个下沉通道。你写数据到一个下沉的通道。这个数据然后从源通道中读取。
这里有一个管道原则的示意图:
创建一个管道
你可以通过调用Pipe.open()方法打开一个管道,像下面这样:
Pipe pipe = Pipe.open();
写入一个管道
为了写入一个管道,你需要访问这个下沉的通道,像下面这样:
Pipe.SinkChannel sinkChannel = pipe.sink();
通过调用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); }
从一个管道中读
为了从一个管道中读取数据,你需要访问这个源通道,像下面这样:
Pipe.SourceChannel sourceChannel = pipe.source();
为了从源通道中读取数据,你可以调用read()方法,像下面这样:
ByteBuffer buf = ByteBuffer.allocate(48); int bytesRead = inChannel.read(buf);
通过read方法返回的int值会告诉你有多少字节读到了buffer中。
翻译地址:http://tutorials.jenkov.com/java-nio/pipe.html
相关文章推荐
- java枚举使用详解
- Java向mysql中插入数据
- Java基础(一)——JVM、JRE、JDK、Javac等
- 请描述Java中的时间监听机制?
- java布尔值进行and和or逻辑运算原理
- java中Collections的两种排序方法
- Java自动拆箱和装箱
- Java技术_Java千百问(0031)_java中抽象概念如何体现的
- 一些Java中常用的定义(2)
- java泛型III-通配符
- 共同学习Java源码--常用数据类型--String(十六)
- java学习笔记(从搭建环境到入门java)
- java排序算法
- mac osx下载安装java运行环境
- java设计模式之单例
- Java TreeSet练习
- 根据类Student的定义,创建五个该类的对象,输出每个学生的信息, 计算并输出这五个学生Java语言成绩的平均值,以及计算并输出他们Java语言成绩的最大值和最小值。
- Java 线程池原理解析(二)
- Java基础复习(二)
- [Spring]Annotation-based container configuration_AnotationBasis_02