JAVA 通过字节数组流,获取字符串中的大小写英文字母

字节数组流

  • 基于内存操作,内部维护着一个字节数组。我们可以利用流的读取机制来处理字符串
  • 无需关闭;因为字节数组流是基于内存的操作流。

ByteArrayInputStream

  • 包含一个内部缓冲区,该缓冲区包含从流中读取的字节。
  • 内部计数器跟踪read()方法要提供的下一个字节。
  • 关闭ByteArrayInputStream无效,此类中的方法在关闭此流后仍可被调用,而不产生任何IOException.

ByteArrayOutputStream

  • 此类实现了一个输出流,其中的数据被写入一个byte数组或int(ASCII码)。
  • 缓冲区会随着数据的不断写入而自动增长。
  • 可使用toByArray()和toString()获取数据。
  • 关闭ByteArrayOutputStream无效,此类中的方法在关闭此流后仍可被调用,而不产生任何IOException.

代码示例

String string = "4654564dasfsfdsfa(*#$%@#$%^^&#$HGHGFHGDH)";//提取该字符串中的英文字母大小写
ByteArrayInputStream bais = new ByteArrayInputStream(string.getBytes());
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int curr = -1;//每次读取的字节
while ((curr = bais.read()) != -1) {
	if ((curr >= 65 && curr <= 90) || (curr >= 97 && curr <= 122)) {//大小写字母在ASCII区间
		baos.write(curr);;
	}
}
//此时无需关闭,原因,字节数组流是基于内存的操作流。
//try {
//	bais.close();
//	baos.close();
//} catch (IOException e) {
//	// TODO Auto-generated catch block
//	e.printStackTrace();
//}
System.out.println(baos.toString());

你可能感兴趣的:(Java)