PipedInputStream管道输出流和PipedOutputStream管道输入流

来源:互联网 发布:徐老师淘宝店地址链接 编辑:程序博客网 时间:2024/06/06 12:31
<pre name="code" class="html"><pre name="code" class="html">import java.io.IOException;import java.io.PipedInputStream;import java.io.PipedOutputStream;/* * 管道流: * PipedInputStream * 管道输入流应该连接到管道输出流; * 管道输入流提供要写入管道输出流的所有数据字节。 * PipedOutputStream * 将管道输出流连接到管道输入流来创建通信管道。 * 数据由某个线程写入 PipedOutputStream 对象, * 并由其他线程从连接的 PipedInputStream 读取。 *  * 不建议对两上对象使用单线程,可能会发生线程锁死, * 因为reader在读取文件时,若读取为空,那将会等待,会阻塞后面的写入功能 */public class FileDemo7 {public static void main(String[] args) throws IOException {// 管道输出流PipedInputStream in = new PipedInputStream();// 管道输入流PipedOutputStream ou = new PipedOutputStream();// 管道输入流连接到管道输出流in.connect(ou);FileDemo7_Read r = new FileDemo7_Read(in);FileDemo7_Write w = new FileDemo7_Write(ou);new Thread(r).start();new Thread(w).start();}}

import java.io.PipedOutputStream;/* * PipedOutputStream * 管道输入流 *  */public class FileDemo7_Write implements Runnable {// 定义管道输入流private PipedOutputStream out;// 初始化时就得到一个输入流FileDemo7_Write(PipedOutputStream out) {this.out = out;}public void run() {try {System.out.println("正在等待写入流!");//线程休眠3秒Thread.sleep(3000);// 写入数据(字节流)out.write("--------你好,管道流!".getBytes());System.out.println("流已写入!");// 关闭流out.close();} catch (Exception e) {throw new RuntimeException("写入失败!");}}}
import java.io.PipedInputStream;/* * PipedInputStream * 管理输出流 * 
*/public class FileDemo7_Read implements Runnable {// 定义输出管道流private PipedInputStream in;// 初始化时就得到一个管道输出流对象FileDemo7_Read(PipedInputStream in) {this.in = in;}public void run() {try {// 定义缓冲区byte[] buf = new byte[1024];System.out.println("正在等待读取流!");// 得到读取的长度int len = in.read(buf);String sb = new String(buf, 0, len);System.out.println("流已读取!");System.out.println(sb);// 关闭流in.close();} catch (Exception e) {throw new RuntimeException("管道输出流失败!");}}}


                                             
0 0