如何使用管道流?

翻译 2006年05月25日 17:52:00

如何使用管道流?

       管道是用来将一个线程的输出流信息传送到另一个线程的输入流中。PipedReader(in the API reference documentation)PipedWriter(in the API reference documentation)(和他们类似的输入输出流PipedInputStream(in the API reference documentation)PipedOutputStream(in the API reference documentation)) 用来实现一个管道的输入和输出, 为什么这是有用的呢?
考虑到一个类可能实现一系列的多样的处理功能,如排序、反序文本。如果某个方法的输出能够做为另一个方法的输入,以便于可以把一序列的方法的调用串接起来,那么这样将可以得到高层次的功能。例如,你可以反序list里每个文字的位置,然后对这些文字进行排序,再反序每个文字来创建一个压韵(可能是按字母顺序的意思)的list。

       如果没有管道流,程序在每一步中只能把当前得到的结果存储在某个临时的位置(比如文件或在内存中)。如下图所示:

    没有管道流,程序必须保存中间结果

        如果有管道流,那么一个方法的输出可以作为下一个要调用的方法的输入,如下图所示:

   通过管道,程序可以把从一个线程传递给另一个。

        让我们来看下这个个程序 RhymingWords,它实现是上图所描述得功能。这个程序用管道连接它的反序和排序方法的输入和输出流来创建一个压韵(可能是按字母顺序的意思)的list。这个程序有几个类组成。

      首先,让我们来看看main方法中反序和排序方法的调用顺序:

FileReader words = new FileReader("words.txt");
Reader rhymingWords = reverse(sort(reverse(words)));

       最里面是调用reverse 方法,并传递一个FileReader对象给它。FileReader对象是打开一个包含一单词列表的文件 words.txt(in a .java source file)reverse 的返回结果传递给sort, sort的返回结果再传递给另一个reverse 方法。

      让我们看下reverse这个方法;sort方法也是类似的,一旦你理解了reverse方法,你自然而然会理解sort方法。





使用PipedWriter 和PipedReader 来构件一个管道.




java_IO流之PipedInputStream管道流的使用

管道流可以实现两个线程之间,二进制数据的传输。 管道流就像一条管道,一端输入数据,别一端则输出数据。通常要分别用两个不同的线程来控制它们。 使用方法如下: import java.io.IOEx...
  • java4found
  • java4found
  • 2013年03月10日 19:30
  • 2348

Java管道流的作用及应用

package io; /*作用 * 管道流的主要作用就是可以进行两个线程间的通信。一个线程作为管道输出流,另一个线程作为管道输入流, * 在启动线程前,只需要将这两个线程的管道流连接到一起就可...
  • shallynever
  • shallynever
  • 2016年03月01日 10:00
  • 2355

管道流、对象流

前言 前面的文章主要讲了文件字符输入流FileWriter、文件字符输出流FileReader、文件字节输出流FileOutputStream、文件字节输入流FileInputStream,这些都是...
  • zhangyuan19880606
  • zhangyuan19880606
  • 2016年04月15日 14:35
  • 601

Java中的管道流

本文已搬家至【Java学习笔记】管道流
  • gnuhpc
  • gnuhpc
  • 2009年11月01日 11:05
  • 2970

linux命令中|管道流的意思

在linux中、可以利用符号:"|"来实现管道功能、 那么什么是管道功能呢: 管道是Shell的一大特征、他将多个命令前后连接起来形成一个管道流、 管道流中的每一个命令都作为一个单独的进程运行、 前一...
  • Listener_ri
  • Listener_ri
  • 2014年12月15日 21:10
  • 931

Java流编程实例之四--管道流

5. 管道流管道流是用来在多个线程之间进行信息传递的Java流,被号称是最难使用的流,被使用的频率也非常低。但事实上,管道流是非常有用的,它提供了多线程间信息传输的一种有效手段。 管道流包括两个类P...
  • LogicTeamLeader
  • LogicTeamLeader
  • 2016年09月16日 19:56
  • 2427

Java里的管道输入流 PipedInputStream与管道输出流 PipedOutputStream

Java里的管道输入流PipedInputStream与管道输出流PipedOutputStream实现了类似管道的功能,用于不同线程之间的相互通信,下面说下自己的一些理解。...
  • zlp1992
  • zlp1992
  • 2015年12月15日 16:55
  • 7432

【重拾】nodeJS 管道流

写在前面再一次过了一遍nodeJS的基础,大概是之前的水平不够,没有很好地理解“流”的概念,今天便好好认识一番吧。先认识什么是”流“Stream 是一个抽象接口,Node 中有很多对象实现了这个接口。...
  • u011413061
  • u011413061
  • 2015年12月15日 10:22
  • 2444

java 多线程通信之管道流

/*   管道流: PipedInputStream void connect(PipedOutputStream src)  使此管道输入流连接到管道输出流 src PipedOutputStre...
  • jethai
  • jethai
  • 2016年08月28日 14:03
  • 999

黑马程序员——java基础——管道流

管道流
  • hutaoxiaodai
  • hutaoxiaodai
  • 2015年08月27日 15:39
  • 161
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何使用管道流?
举报原因:
原因补充:

(最多只允许输入30个字)