内存操作流----ByteArrayInputStream、ByteArrayOutputStream
文章目录
前言
之前介绍的JavaIO操作都是在文件上的,这些操作也可以应用到内存中哦,就是将程序数据的输入输出位置设置在内存上,此时需要使用ByteArrayInputStream和ByteArrayOutputStream类来完成操作。
不过需要注意的是,此时操作点应该向内存看齐,即内存操作流的输入流指的是读入内存中的数据,输出流即内存向外输出写出数据,和之前的概念有些相反,小伙伴们要注意哦~
ByteArrayInputStream的主要方法
序号 | 方法 | 类型 | 描述 |
---|---|---|---|
1 | public ByteArrayInputStream(byte[] buf) | 构造 | 将全部的内容写入内存中 |
2 | public ByteArrayOutputStream(byte[], int offset, int length) | 构造 | 将指定范围内的内容写到内存中 |
ByteArrayOutputStream的主要方法
序号 | 方法 | 类型 | 描述 |
---|---|---|---|
1 | public ByteArrayOutputStream() | 构造 | 创建对象 |
2 | public void write(int b) | 普通 | 将内容从内存中输出 |
案例演示
使用内存操作流完成一个小写字母转换为大写字母的程序
package chapter_twelve;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
public class ByteArrayDemo01 {
public static void main(String[] args) throws Exception {
String string = "Hello World!"; //定义字符串为Hello World
ByteArrayInputStream byteArrayInputStream = null; //定义内存字节输入流,针对于内存而言的输入流
ByteArrayOutputStream byteArrayOutputStream = null; //定义内存字节输出流,针对于内存而言的输出流
byteArrayInputStream = new ByteArrayInputStream(string.getBytes()); //实例化内存输入流,参数为bytes数组
byteArrayOutputStream = new ByteArrayOutputStream(); //实例化内存输出流
int temp = 0; //定义临时变量temp
while ((temp = byteArrayInputStream.read()) != -1){ //读取内存输入流中的数据
char c = (char)temp; //转化为char类型变量
c = Character.toUpperCase(c); //将数据转化为大写数据
byteArrayOutputStream.write(c); //将转换后的数据写入内存输出流
}
System.out.println(byteArrayOutputStream.toString()); //将内存输出流中的数据进行输出
byteArrayInputStream.close(); //关闭内存输入流
byteArrayOutputStream.close(); //关闭内存输出流
}
}
运行结果
HELLO WORLD!
总结
内存操作流与其它的IO操作有些差异,因为进行读写都是在内存中进行的,在操作一些生成临时数据时才会用到内存流,也比较重要,小伙伴们如理解不过甚请呼叫我~,哈哈,加油!
小知识
从ByteArrayInputStream和ByteArrayOutputStream定义中可知,此两个类也是继承于InputStream、OutputStream字节输入输出流类,因此我们可以直接输用对象的多态性向上转型直接为其父类对象进行实例化使用。