1.字节数组流:基于内存操作,内部维护一个字节数组,我们可以利用流的读取机制来处理字符串,无需关闭,与文件无关,所以也不会报IO异常
2.ByteArrayInputStream 可以将字节数组转换为输入流 而 ByteArrayOutputStream 可以捕获内存缓冲区的数据转换为字节数组
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.UnsupportedEncodingException;
import java.nio.charset.StandardCharsets;
public class io_7_byteArrayStream {
public static void main(String[] args) {
demo1();
}
/**
* 字节数组流:基于内存操作,内部维护一个字节数组,我们可以利用流的读取机制来处理字符串,无需关闭,与文件无关,所以也不会报IO异常
* 和文件没有关系
* ByteArrayInputStream 可以将字节数组转换为输入流 而 ByteArrayOutputStream 可以捕获内存缓冲区的数据转换为字节数组
*/
public static void demo1(){
//例子1:从下面的字符串中找出字母(大小写都包括)
String str = "123456asdb*@^*()AUIR";
//数组输入流
ByteArrayInputStream bais = new ByteArrayInputStream(str.getBytes(StandardCharsets.UTF_8));
//数组输出流
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int curr = -1;//每次读取的字节
while ((curr = bais.read())!=-1){
//字节等于 大小写字母的 阿斯克码值 就表示该字节就是字母 大写:65-90 小写:97-122
if((curr>=65 && curr<=90) || (curr>=97 && curr<=122)){
baos.write(curr);
}
}
//此时无需关闭,因为字节数组流是基于内存的操作流
try {
System.out.println(baos.toString(String.valueOf(StandardCharsets.UTF_8)));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
}
结果: