ByteAarryInputStream 字节数组输入流
ByteAarryOutputStream 字节数组输出流
字节数组流,跟文件没有关系,完全是在内存里完成操作,只不过是利用IO流的字节的特性可以一个字节一个字节的读取而已;
比如要获取以个字符串中的所有英文字母等等操作
字节数组流:是基于内存操作,内部维护一个字节数组,可以利用流的读取机制来处理字符串,无需关闭流,不会报IO异常
package com.file;
/**
* 字节数组流:基于内存操作,内部维护一个字节数组
* ASCII码表大写字母的整型数范围 [65,90];小写字母的整型数范围 [97,122]
*
* 举例:提取一个字符串中小写字母和大写字母,并求出字母的总个数
*/
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
public class ByteArraysStreamDemo {
public static void main(String[] args) {
ByteArrayStream();
}
public static void ByteArrayStream() {
String info = "1234253254asdfsafdasWFEASFASFDSADF%^&^%&*^%&$#%";
ByteArrayInputStream bais = new ByteArrayInputStream(info.getBytes());
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int curr = -1;
while((curr=bais.read())!=-1) { //bais.read() 读取后返回的是一个整型的字节数
if((curr>=65 && curr<=90) || (curr>=97 && curr<=122)){ //c整型的字节数根据ASCII码表,判断出小写字母和大写字母的范围
baos.write(curr); //查看源码得知,write(curr)方法会把整型curr转换成字节数,得出的字节数值存入一个字节数组里即这里的baos
}
}
//此时无需关闭流,因为:字节数组流是基于内存的操作流,跟文件没有关系
System.out.println(baos.toString());
System.out.println(baos.toString().length());
}
}