整理源于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流的支持,此时最好的选择就是内存操作流。