IO操作--内存操作流

内存操作流(次重点)

在之前所使用的是文件操作流,可以发现在操作过程之中,都是以文件为终端进行输入,输出。发现需要使用IO操作,但是又不需要产生文件的话,可以将操作终端修改为内存,那么使用内存操作流
内存操作流分为两类
字节流内存操作:byteArrayInputStream,byteArrayOutputStream
字节流内存操作:CharArrayReader,CharArrayWriter

那么下面以:byteArrayInputStream,byteArrayOutputStream为例进行讲解,首先来观察这两个类的继承结构和各自构造方法定义

byteArrayInputStream byteArrayOutputStream
java.lang.Object
java.io.InputStream
     java.io.byteArrayInputStream
java.lang.Object
java.io.OutputStream
java.io.byteArrayOutputStream
构造方法:public ByteArrayInputStream(byte[] buf) 构造方法:public ByteArrayOutputStream()
下面对比以下文件与内存操作的区别;
文件操作流:
输出:程序==<OutputStream==<文件
输入:程序>==InputStream>==文件
内存操作流:
输出:程序==<ByteArrayInputStream==<内存
输入:程序>==ByteArrayOutputStream>==内存
下面以将字母由小写变为大写程序为例。
范例:使用内存操作流
package io;


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


public class NeiCun {
public static void main(String[] args) throws Exception{
// TODO Auto-generated method stub
String str="hello wordl";
//将需要进行操作的数据保存在内存输入流之中,理解为,向内存里面输入数据
InputStream input=new ByteArrayInputStream(str.getBytes());
//读取内存流之中的数据,理解为:内存的输出
OutputStream output=new ByteArrayOutputStream();
int temp=0;//保存每次读取进来的数据
while((temp=input.read())!=-1) {
output.write(Character.toUpperCase(temp));//所有的内容都读取出来; 
}
String msg=output.toString();//读出内存输出流的数据
input.close();
output.close();
System.out.println(msg);
}


}
此时执行了IO操作,并且也没有任何的文件产生,可以理解为操作的是临时文件

猜你喜欢

转载自blog.csdn.net/a584898/article/details/81022077