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