java多线程的字符流与字节流
字节流:
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多线程的字符流与字节流的更多相关文章
- java学习之字符流与字节流的转换
package com.io; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundExce ...
- Java——文件操作字符流和字节流的区别
转:http://blog.csdn.net/joephoenix/articles/2283165.aspx java的IO流分两种流 字节流 InputStream OutputStream 字符 ...
- Java IO编程——字符流与字节流
在java.io包里面File类是唯一 一个与文件本身有关的程序处理类,但是File只能够操作文件本身而不能够操作文件的内容,或者说在实际的开发之中IO操作的核心意义在于:输入与输出操作.而对于程序而 ...
- 理解Java中字符流与字节流的区别
1. 什么是流 Java中的流是对字节序列的抽象,我们可以想象有一个水管,只不过现在流动在水管中的不再是水,而是字节序列.和水流一样,Java中的流也具有一个“流动的方向”,通常可以从中读入一个字节序 ...
- Java字符流和字节流对文件操作
记得当初自己刚开始学习Java的时候,对Java的IO流这一块特别不明白,所以写了这篇随笔希望能对刚开始学习Java的人有所帮助,也方便以后自己查询.Java的IO流分为字符流(Reader,Writ ...
- Java中字符流与字节流的区别
字符流处理的单元为2个字节的Unicode字符,分别操作字符.字符数组或字符串,而字节流处理单元为1个字节,操作字节和字节数组.所以字符流是由Java虚拟机将字节转化为2个字节的Unicode字符为单 ...
- Java基础---IO(一)---IO流概述、字符流、字节流、流操作规律
第一讲 IO概述 概述 1.IO流:即InputOutput的缩写. 2.特点: 1)IO流用来处理设备间的数据传输. 2)Java对数据的操作是通过流的方式. 3)Java用于操作流的对象都 ...
- Java基础:IO流之字节流和字符流
1. 流的概念 流(stream)的概念源于UNIX中管道(pipe)的概念.在UNIX中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备.外部文件等. 一个流,必有源端和目的端 ...
- [Java] I/O底层原理之一:字符流、字节流及其源码分析
关于 I/O 的类可以分为四种: 关于字节的操作:InputStream 和 OutPutStream: 关于字符的操作:Writer 和 Reader: 关于磁盘的操作:File: 关于网络的操作: ...
随机推荐
- vmware虚拟机和网络中的桥接和NAT
vmware虚拟机和网络中的桥接和NAT 有许多人在网上回答类似的问题,但大多说的不够简单,且互相抄袭的嫌疑很大,这里我尽自己努力把问题说的明白一些 首先解释一下什么是NAT(network addr ...
- 路径字符串数据转化为树型层级对象,path to json tree
由于项目中使用了react 及 ant-design ,在使用tree树型控件时,需要 类似下面的数据, const treeData = [{ title: '0-0', key: '0-0', c ...
- 【总结】关于YUV-RGB格式转换的一些个人理解
这段时间一直在研究YUV的格式问题例如YUV422.YUV420,在网上搜索了很多这方面的资料,发现很多资料讲的东西是重复的,没有比较深入的讲解,所以看了之后印象不是很深,过了一段时间之后又对它们有了 ...
- 详谈C++虚函数表那回事(一般继承关系)
沿途总是会出现关于C++虚函数表的问题,今天做一总结: 1.什么是虚函数表: 虚函数(Virtual Function)是通过一张虚函数表(Virtual Table)来实现的.简称为V-Table. ...
- python学习笔记-问题
1.字典按照值进行排序输出 2.返回函数-闭包的使用
- xcode7,ios9 部分兼容设置
神奇的苹果公司,再一次让程序员中枪. 一.xcode7 新建的项目,Foundation下默认所有http请求都被改为https请求. HTTP+SSL/TLS+TCP = HTTPS 也就是说,服务 ...
- Lucene 的索引文件锁原理
Lucene 的索引文件锁原理 2016/11/24 · IT技术 · lucene 环境 Lucene 6.0.0Java “1.8.0_111”OS Windows 7 Ultimate 线程 ...
- python之路--day6--字符编码
一.知识储备 cpu--控制和运算 内存--暂时存储cpu需要的数据 硬盘--永久保存数据2.文本编辑器的原理存储原理 1,启动文本编辑器 2,在编辑器上输入内容---此时输入内容还在内存上 3,保存 ...
- MongoDB启动客户端和服务端
要在MongoDB安装(我安装在D盘)的目录的根目录下,先建data目录,然后data目录下再建db目录(结果:D:\data\db). 然后cmd进入bin目录,执行.\mongod.exe启动服务 ...
- WPS怎么让前几页的页眉或者页脚与后面的不同
其实不管利用WPS还是office对文档还是PPT进行操作,其实核心思想还是一种编程,主要是前端的编程,就是通过改变一些这些软件设置的样式,然后通过改变这些样式,使这些文字以老师要求的格式显示出来的, ...