字节数组流:
基于内存操作,内部维护着一个字节数组,我们可以利用流的读取机制来处理字符串
无需关闭
无文件无关,借鉴流的一个一个字节读取的机制,来操作字符串
ByteArrayInputStream
包含一个内部缓冲区该缓冲区包含从流中读取的字节。内部计数器跟踪read方法要提供的下一个字节。关闭ByteArrayInputStream无效。此类中的方法在关闭此流后仍可被调用,而不会产生任何IOException
ByteArrayOutputStream
此类实现了一个输出流,其中的数据被写入一个byte数组。缓冲区会随着数据的不断写入而自动增长。可使用toByteArray()和toString()获取数据。关闭ByteArrayOutputStream无效。此类中的方法在关闭此流后仍可被调用,而不会产生任何IOException。
代码实现:
package com.lemon;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
/**
* 字节数组流:
* 基于内存操作,内部维护着一个字节数组,我们可以利用流的读取机制来处理字符串
* 无需关闭,
* @author lemonSun
* 2019年5月5日下午9:57:23
*/
public class ByteArrayStreamDemo {
public static void main(String[] args) {
byteArray();
}
//字节数组输入输出流 实现字符串查找大小写字母
private static void byteArray(){
String s ="asa213D23AD23&*(4(Ad&f454rsdd";
//字节数组输入流
ByteArrayInputStream bais = new ByteArrayInputStream(s.getBytes());
//字节数组输出流
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int curr = -1; //每次读取的字节
while((curr = bais.read())!= -1) {
if((curr >= 65 && curr<= 90) || (curr>= 97 && curr <= 122)) {
baos.write(curr);
}
}
//无需关闭,因为字节数组流是基于内存的操作流
System.out.println(baos.toString());
}
}