黑马程序员技术交流社区
标题:
管道流关于API的不解,大家帮忙看看,谢谢...
[打印本页]
作者:
郑飞
时间:
2014-10-25 22:11
标题:
管道流关于API的不解,大家帮忙看看,谢谢...
本帖最后由 郑飞 于 2014-10-25 22:34 编辑
这是PipedInputStream类的说明中的:
通常,数据由某个线程从
PipedInputStream
对象读取,并由其他线程将其写入到相应的
PipedOutputStream
。
我看了老毕的代码,后来自己写了个类似的,如下:
package com.itheima.io;
import java.io.PipedInputStream;
import java.io.PipedOutputStream;
import java.util.Arrays;
public class Test {
public static void main(String[] args) throws Exception, NoSuchMethodException {
PipedInputStream pis = new PipedInputStream();
PipedOutputStream pos = new PipedOutputStream();
pis.connect(pos);
pos.write("abcd".getBytes());
byte[] buf = new byte[10];
pis.read(buf);
System.out.println(Arrays.toString(buf));
pis.close();
pos.close();
}
}
复制代码
正常运行,输出正确:abcd;
PipedInputStream类说明中说,数据流向是从PipedInputStream到PipedOutputStream,可是代码却是相反方向的,这是为什么啊?
作者:
郑飞
时间:
2014-10-25 22:35
写错了 运行结果是abcd 改过来了 不影响问题;
作者:
nxp1986
时间:
2014-10-25 22:38
管道流是先有数据才能读取的,代码中你没有引入别的文件或数据,而使用管道流的输出的方法,所以只能是先写入后才能读取,没有写入的数据怎么能读取出来数据呢?
作者:
郑飞
时间:
2014-10-25 22:45
nxp1986 发表于 2014-10-25 22:38
管道流是先有数据才能读取的,代码中你没有引入别的文件或数据,而使用管道流的输出的方法,所以只能是先写 ...
管道流不是没有接收数据的构造方法么 我看老毕的视屏中数据也是从PipedOutputStream的write()方法中进去的 所以才有了以上的疑问
作者:
郑飞
时间:
2014-10-25 22:51
nxp1986 发表于 2014-10-25 22:38
管道流是先有数据才能读取的,代码中你没有引入别的文件或数据,而使用管道流的输出的方法,所以只能是先写 ...
PipedOutputStream类的说明:通常,数据由某个线程写入 PipedOutputStream 对象,并由其他线程从连接的 PipedInputStream 读取。
PipedInputStream类的说明:通常,数据由某个线程从 PipedInputStream 对象读取,并由其他线程将其写入到相应的 PipedOutputStream。
好像看懂了 : 我的数据"abcd"写入pos,(pos作为pis的参数),由pis读取出来;代码中确实是这么个运行方式;
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2