Java中IO流的使用方法之内存操作流

时间:2023-02-15 17:50:52

整理源于Java核心技术精讲

某个操作必须发生IO操作,但是又不希望有一些临时文件产生,肯定无法使用之前的文件操作流。为解决问题,提供了内存操作流,即对内存进行操作的终端,以发生IO操作关系。

  • 字节内存操作流:内存输入流(ByteArrayInputStream) 内存输出流(ByteArrayOutputStream)
  • 字符内存操作流:内存输入流(CharArrayReader) 内存输出流(CharArrayWriter)

注:这里的流的形式和之前的文件操作流有所不同
ByteArrayInputStream:程序->InputStream->输出到内存
ByteArrayOutputStream:程序<-OutputStream<-内存

使用内存操作流完成一个字符串大小写字母的转换操作

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

public class TestDemo {
    public static void main(String[] args) throws IOException{
        String str = "hello world.";
        InputStream input = new ByteArrayInputStream(str.getBytes());//传入内存,注意这里的构造
        OutputStream output = new ByteArrayOutputStream();//准备从内存中读取数据
        int temp = 0;
        while((temp=input.read())!=-1)
        {
            output.write((char)Character.toUpperCase(temp));//从内存输出
        }
        String newStr = output.toString();//取数据
        output.close();
        input.close();
        System.out.println(newStr);
    }
}

延伸:
在javaEE开发技术中,AJAX技术通过服务器生成XML数据后交给前台显示的操作是最为常见的一种。会使用到XML解析工具(DOM,JDOM,DOM4J等),并且需要IO流的支持,此时最好的选择就是内存操作流。