字节流:

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. vmware虚拟机和网络中的桥接和NAT

    vmware虚拟机和网络中的桥接和NAT 有许多人在网上回答类似的问题,但大多说的不够简单,且互相抄袭的嫌疑很大,这里我尽自己努力把问题说的明白一些 首先解释一下什么是NAT(network addr ...

  2. 路径字符串数据转化为树型层级对象,path to json tree

    由于项目中使用了react 及 ant-design ,在使用tree树型控件时,需要 类似下面的数据, const treeData = [{ title: '0-0', key: '0-0', c ...

  3. 【总结】关于YUV-RGB格式转换的一些个人理解

    这段时间一直在研究YUV的格式问题例如YUV422.YUV420,在网上搜索了很多这方面的资料,发现很多资料讲的东西是重复的,没有比较深入的讲解,所以看了之后印象不是很深,过了一段时间之后又对它们有了 ...

  4. 详谈C++虚函数表那回事(一般继承关系)

    沿途总是会出现关于C++虚函数表的问题,今天做一总结: 1.什么是虚函数表: 虚函数(Virtual Function)是通过一张虚函数表(Virtual Table)来实现的.简称为V-Table. ...

  5. python学习笔记-问题

    1.字典按照值进行排序输出 2.返回函数-闭包的使用

  6. xcode7,ios9 部分兼容设置

    神奇的苹果公司,再一次让程序员中枪. 一.xcode7 新建的项目,Foundation下默认所有http请求都被改为https请求. HTTP+SSL/TLS+TCP = HTTPS 也就是说,服务 ...

  7. Lucene 的索引文件锁原理

    Lucene 的索引文件锁原理 2016/11/24 · IT技术 · lucene   环境 Lucene 6.0.0Java “1.8.0_111”OS Windows 7 Ultimate 线程 ...

  8. python之路--day6--字符编码

    一.知识储备 cpu--控制和运算 内存--暂时存储cpu需要的数据 硬盘--永久保存数据2.文本编辑器的原理存储原理 1,启动文本编辑器 2,在编辑器上输入内容---此时输入内容还在内存上 3,保存 ...

  9. MongoDB启动客户端和服务端

    要在MongoDB安装(我安装在D盘)的目录的根目录下,先建data目录,然后data目录下再建db目录(结果:D:\data\db). 然后cmd进入bin目录,执行.\mongod.exe启动服务 ...

  10. WPS怎么让前几页的页眉或者页脚与后面的不同

    其实不管利用WPS还是office对文档还是PPT进行操作,其实核心思想还是一种编程,主要是前端的编程,就是通过改变一些这些软件设置的样式,然后通过改变这些样式,使这些文字以老师要求的格式显示出来的, ...