字节流:

package com.wz.thread.stream;

import java.io.PipedOutputStream;

/**
 * 字节输入流
 * @author Administrator
 *
 */
public class WriteData {

    
    public void writeMethod(PipedOutputStream out) {
        try {
            System.out.println("write:");
            for(int i = 0; i < 200; i++) {
                String outData = "" + ( i + 1 );
                out.write(outData.getBytes());
                System.out.print(outData);
            }
            System.out.println();
            out.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
package com.wz.thread.stream;

import java.io.PipedInputStream;

/**
 * 字节输出流
 * @author Administrator
 *
 */
public class ReadData {
    
    public void readMethod(PipedInputStream input) {
        try {
            System.out.println("read:");
            byte[] byteArray = new byte[20];
            int readLength = input.read(byteArray);
            while(-1 != readLength) {
                String newData = new String(byteArray, 0, readLength);
                System.out.print(newData);
                readLength = input.read(byteArray);
            }
            System.out.println();
            input.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}
package com.wz.thread.stream;
/**
 * 写入流线程
 * @author Administrator
 *
 */

import java.io.PipedOutputStream;

public class ThreadWrite extends Thread{
    
    private WriteData write;
    private PipedOutputStream out;
    public ThreadWrite(WriteData write, PipedOutputStream out) {
        super();
        this.write = write;
        this.out = out;
    }
    
    @Override
    public void run() {
        super.run();
        write.writeMethod(out);
    }

}
package com.wz.thread.stream;
/**
 * 读出流线程
 * @author Administrator
 *
 */

import java.io.PipedInputStream;

public class ThreadRead extends Thread{
    
    private ReadData read;
    private PipedInputStream input;
    public ThreadRead(ReadData read, PipedInputStream input) {
        super();
        this.read = read;
        this.input = input;
    }
    
    @Override
    public void run() {
        super.run();
        read.readMethod(input);
    }
    
}
package com.wz.thread.stream;

import java.io.PipedInputStream;
import java.io.PipedOutputStream;

/**
 *
 * @author Administrator
 *
 */
public class Run {
    
    public static void main(String[] args) {
        try {
            WriteData write = new WriteData();
            ReadData read = new ReadData();
            
            PipedOutputStream out = new PipedOutputStream();
            PipedInputStream input = new PipedInputStream();
            // 这个是相互建立连接
            input.connect(out);
            //out.connect(input);
            
            ThreadWrite threadWrite = new ThreadWrite(write, out);
            ThreadRead threadRead = new ThreadRead(read, input);
            
            // 先读再写  更好的看出效果
            threadRead.start();
            Thread.sleep(2000);
            threadWrite.start();
            
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}
字符流:
package com.wz.thread.readerandwrite;

import java.io.PipedWriter;

/**
 * 字符输入流
 * @author Administrator
 *
 */
public class WriteData {

    
    public void writeMethod(PipedWriter out) {
        try {
            System.out.println("write:");
            for(int i = 0; i < 200; i++) {
                String outData = "" + ( i + 1 );
                out.write(outData);
                System.out.print(outData);
            }
            System.out.println();
            out.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
package com.wz.thread.readerandwrite;

import java.io.PipedReader;

/**
 * 字符输出流
 * @author Administrator
 *
 */
public class ReadData {
    
    public void readMethod(PipedReader input) {
        try {
            System.out.println("read:");
            char[] byteArray = new char[20];
            int readLength = input.read(byteArray);
            while(-1 != readLength) {
                String newData = new String(byteArray, 0, readLength);
                System.out.print(newData);
                readLength = input.read(byteArray);
            }
            System.out.println();
            input.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}
package com.wz.thread.readerandwrite;
/**
 * 写入流线程
 * @author Administrator
 *
 */

import java.io.PipedWriter;

public class ThreadWrite extends Thread{
    
    private WriteData write;
    private PipedWriter out;
    public ThreadWrite(WriteData write, PipedWriter out) {
        super();
        this.write = write;
        this.out = out;
    }
    
    @Override
    public void run() {
        super.run();
        write.writeMethod(out);
    }

}
package com.wz.thread.readerandwrite;
/**
 * 读出流线程
 * @author Administrator
 *
 */

import java.io.PipedReader;

public class ThreadRead extends Thread{
    
    private ReadData read;
    private PipedReader input;
    public ThreadRead(ReadData read, PipedReader input) {
        super();
        this.read = read;
        this.input = input;
    }
    
    @Override
    public void run() {
        super.run();
        read.readMethod(input);
    }
    
}
package com.wz.thread.readerandwrite;

import java.io.PipedReader;
import java.io.PipedWriter;

/**
 *
 * @author Administrator
 *
 */
public class Run {
    
    public static void main(String[] args) {
        try {
            WriteData write = new WriteData();
            ReadData read = new ReadData();
            
            PipedWriter out = new PipedWriter();
            PipedReader input = new PipedReader();
            // 这个是相互建立连接
            input.connect(out);
            //out.connect(input);
            
            ThreadWrite threadWrite = new ThreadWrite(write, out);
            ThreadRead threadRead = new ThreadRead(read, input);
            
            // 先读再写  更好的看出效果
            threadRead.start();
            Thread.sleep(2000);
            threadWrite.start();
            
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

java多线程的字符流与字节流的更多相关文章

  1. java学习之字符流与字节流的转换

    package com.io; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundExce ...

  2. Java——文件操作字符流和字节流的区别

    转:http://blog.csdn.net/joephoenix/articles/2283165.aspx java的IO流分两种流 字节流 InputStream OutputStream 字符 ...

  3. Java IO编程——字符流与字节流

    在java.io包里面File类是唯一 一个与文件本身有关的程序处理类,但是File只能够操作文件本身而不能够操作文件的内容,或者说在实际的开发之中IO操作的核心意义在于:输入与输出操作.而对于程序而 ...

  4. 理解Java中字符流与字节流的区别

    1. 什么是流 Java中的流是对字节序列的抽象,我们可以想象有一个水管,只不过现在流动在水管中的不再是水,而是字节序列.和水流一样,Java中的流也具有一个“流动的方向”,通常可以从中读入一个字节序 ...

  5. Java字符流和字节流对文件操作

    记得当初自己刚开始学习Java的时候,对Java的IO流这一块特别不明白,所以写了这篇随笔希望能对刚开始学习Java的人有所帮助,也方便以后自己查询.Java的IO流分为字符流(Reader,Writ ...

  6. Java中字符流与字节流的区别

    字符流处理的单元为2个字节的Unicode字符,分别操作字符.字符数组或字符串,而字节流处理单元为1个字节,操作字节和字节数组.所以字符流是由Java虚拟机将字节转化为2个字节的Unicode字符为单 ...

  7. Java基础---IO(一)---IO流概述、字符流、字节流、流操作规律

    第一讲     IO概述 概述 1.IO流:即InputOutput的缩写. 2.特点: 1)IO流用来处理设备间的数据传输. 2)Java对数据的操作是通过流的方式. 3)Java用于操作流的对象都 ...

  8. Java基础:IO流之字节流和字符流

    1. 流的概念 流(stream)的概念源于UNIX中管道(pipe)的概念.在UNIX中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备.外部文件等. 一个流,必有源端和目的端 ...

  9. [Java] I/O底层原理之一:字符流、字节流及其源码分析

    关于 I/O 的类可以分为四种: 关于字节的操作:InputStream 和 OutPutStream: 关于字符的操作:Writer 和 Reader: 关于磁盘的操作:File: 关于网络的操作: ...

随机推荐

  1. DB2开发系列之四——触发器

    1.触发器类型 1)BEFORE 触发器:在对表插入或更新之前执行该触发器,允许使用CALL 和 SIGNAL SQL 语句: 2)BEFORE DELETE 触发器:在删除操作之前执行该触发器: 3 ...

  2. C#基础知识(一)自己总结的。。。

    一.变量的声明 访问修饰符  数据类型  变量名: 访问修饰符:public ,private,protected 变量的访问修饰符默认为private eg: Public  Int a: a=10 ...

  3. bug终结者 团队作业第一周

    bug终结者 团队作业第一周 小组组员及人员分工 小组成员 组长: 20162323 周楠 组员: 20162302 杨京典 20162322 朱娅霖 20162327 王旌含 20162328 蔡文 ...

  4. SDVN

    Software Defined Vehicular Networks VANET 车载自组网(VANET)是指在交通环境中车辆之间.车辆与固定接入点之间及车辆与行人之间相互通信组成的开放式移动Ad ...

  5. 201621123031 《Java程序设计》第2周学习总结

    Week02-Java基本语法与类库 1. 本周学习总结 本周讲了Java的基本数据类型,主要分为八类(byte,short,int,long,double,float,char,boolean),其 ...

  6. js的 == 和 ===的区别

    1.对于string,number等基础类型,==和===是有区别的 不同类型间比较,==之比较转化成同一类型后的值看值是否相等,===如果类型不同,其结果就是不等,同类型比较,直接进行"值 ...

  7. [知识梳理]课本3&9.1

    函数:关键词:参数.返回值.函数返回类型.函数体. 函数按照返回类型,可以分为有参函数和无参函数. 函数根据是否有返回值,可以分为返回值函数和非返回值函数.     函数的定义:函数的定义可以放在任意 ...

  8. php面向对象相关内容

    1.什么是面向对象? 面向对象编程(Object Oriented Programming, OOP, 面向对象程序设计)是一种计算机编程架构,OOP的一条基本原则是计算机程序是由单个能够起到子程序作 ...

  9. H5 FormData对象的作用及用法

    JS: function uploadFileAndParam() { var url = "http://localhost:42561/api/upload/UploadPost&quo ...

  10. 请求方式:request和 get、post、put

    angular 的 http 多了 Request, Headers, Response ,这些都是游览器的"新特性" Fetch API. Fetch API 和以前的 xmlh ...