IO-05内存操作流06管道流

JAVA中可以将输出的位置设置在内存上,此时使用ByteArrayInputStream,ByteArrayOutputStream来完成输入,输出功能。

利用这两个类实现大小字母的转换:

package lianxijihe;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;

public class lianxi049 {
	public static void main(String[] args){
		String str = "AAAAAAAAA";
		InputStream in = new ByteArrayInputStream(str.getBytes());
		OutputStream out = new ByteArrayOutputStream();
		int temp;
		try {
			while((temp=in.read())!=-1){
				char c = (char)temp;
				out.write(Character.toLowerCase(c));

			}
			String newStr = out.toString();
			in.close();
			out.close();
			System.out.println(newStr);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}
}

线程通讯流(管道流)的使用

管道流的主要作用是可以进行两个线程间的通讯,分为管道输出流PipedOutputStream,管道输入流PipedInputStream,如果想要进行管道流输出,则必须把输入流连在输入流上,如下图:

下面使用管道流进行输入输出操作:

package lianxijihe;

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

public class lianxi050 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Send s = new Send();
		Receive r = new Receive();
		try {
			s.getPos().connect(r.getPis());
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		new Thread(s).start();
		new Thread(r).start();

	}

}
class Send implements Runnable{
	private PipedOutputStream pos = null;
	public Send(){
		this.pos = new PipedOutputStream();

	}
	@Override
	public void run() {
		// TODO Auto-generated method stub
		String str ="HelloWorld!!";
		 try {
			this.pos.write(str.getBytes());
			pos.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}
	public PipedOutputStream getPos(){
		return this.pos;
	}
}
class Receive implements Runnable{
	private PipedInputStream pis = null;

	public Receive(){
		this.pis = new PipedInputStream();
	}

	@Override
	public void run() {
		byte[] b =new byte[1024];
		int len = 0;
		try {
			len = pis.read(b);
			pis.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		System.out.println(new String(b,0,len));
	}

	public PipedInputStream getPis(){
		return this.pis;
	}

}

IO-05内存操作流06管道流,布布扣,bubuko.com

时间: 2024-10-17 14:46:19

IO-05内存操作流06管道流的相关文章

IO包中的其他类 打印流,序列流,操作对象,管道流,RandomAccessFile,操作基本数据类型,操作字节数组

打印流,序列流,操作对象,管道流,RandomAccessFile,操作基本数据类型,操作字节数组 一.打印流: 该流提供了打印方法,可以将各种数据类型的数据都原样打印. 字节打印流PrintStream构造函数可以接收的参数类型1.File对象 File2.字符串路径 String3.字节输出流 OutputStream 字符打印流PrintWriter(更常用)1.File对象 File2.字符串路径 String3.字节输出流 OutputStream4.字符输出流 Writer publ

JavaLearning:JAVA IO 之内存操作流

package org.fun.io; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; public class ByteArrayDemo { public static void main(String[] args) { String str = "helloworld";// 定义字符串,全部由小写字母组成 ByteArrayOutputStream bos = null;//

Java基础系列10:内存操作流,管道流,合并流,压缩流以及回退流

前言:这篇文章将对几个"非主流"的IO流进行简单的介绍 一 内存操作流 内存操作流的主要作用是完成内存的输入和输出.比如说在某些情况下需要生成一些临时信息,而将这些临时信息保存在文件中不仅要进行文件的读写而且在功能完成之后还需要删除这个临时文件,因此比较麻烦,这时或许就需要用到内存操作流了. 需要用到的API是:ByteArrayInputStream和ByteArrayOutputStream,分别表示输入流和输出流,示例代码如下: package javase.io; import

Java基础学习笔记【10】打印流、管道流

ByteArrayInputStream和ByteArrayOutputStream内存流,操作基本和文件流其他流差不多,主要使用在程序需要用临时文件,关闭内存流是无效的所以不用关闭 操作流,不管是什么流,最保险的方式,就是最后都close一下 内存流: ByteArrayInputStream.ByteArrayOutputStream.CharArrayReader. CharArrayWriter: 打印流: 1 2 3 4 5 6 PrintStream: print(Object o)

黑马程序员——Java基础——IO流(三)—序列流、管道流、RandomAccessFile类、操作基本数据类型的流对象、操作数组和字符串、字符编码

第一讲 对象序列化(持久化) 一.概述:就是把对象封存在硬盘,可以保持数据:关键类:ObjectInputStream和ObjectOutpurStream 二. 关键字:ObjectOutputStream:方法有writerObject()读取 ObjectInputStream 方法有readObject() 被序列化的对象需要 implements Serializable关于被序列化的类需要实现Serializable它等于一个撮,标识用的,改变类里面的语句就变了.如果想固定一个撮,可

JAVA的IO编程:管道流

掌握线程通讯流(管道流)的使用 管道流的主要作用是可以进行两个线程间的通讯,分为管道输入流(PipeOutputStream)和管道输出流(PipeInputStream). 如果要想进行管道输出,则必须把输出流连在输入流之上,在PipeOutputStream上有如下方法用于连接管道. void connect(PipedInputStream snk) 将此管道输出流连接到接收者. 要想连接输入和输出,必须使用此方法. PipeOutputStream输出方法: void write(byt

Java IO7:管道流、对象流

前言 前面的文章主要讲了文件字符输入流FileWriter.文件字符输出流FileReader.文件字节输出流FileOutputStream.文件字节输入流FileInputStream,这些都是常见的流类.当然除了这些流类之外,Java还提供了很多的流类给用户使用,本文就看一下别的流. 管道流 管道流主要用于连接两个线程的通信.管道流也分为字节流(PipedInputStream.PipedOutputStream)和字符流(PipedReader.PipedWriter).比如一个Pipe

Java IO5:管道流、对象流

前言 前面的文章主要讲了文件字符输入流FileWriter.文件字符输出流FileReader.文件字节输出流FileOutputStream.文件字节输入流FileInputStream,这些都是常见的流类.当然除了这些流类之外,Java还提供了很多的流类给用户使用,本文就看一下别的流. 管道流 管道流主要用于连接两个线程的通信.管道流也分为字节流(PipedInputStream.PipedOutputStream)和字符流(PipedReader.PipedWriter).比如一个Pipe

管道流

管道流主要可以进行两个线程之间的通信. PipedOutputStream 管道输出流 PipedInputStream 管道输入流 [例子1]验证管道流 /** * 验证管道流 * */ import java.io.*; /** * 消息发送类 * */ class Send implements Runnable{ private PipedOutputStream out=null; public Send() { out=new PipedOutputStream(); } publi