Java字节数组流学习

字节数组流

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

  • ByteArrayInputStream

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

  • ByteArrayOutputStream

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

代码示例:
问题:有一个字符串,我们想把其中的字母全部提取出来

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;

import org.junit.Test;

public class ByteArrayDemo {
	
	@Test
	public void byteArray() {
		String str = "jfkdsls423324@%$^@$@*&JKDHF和";
	
		ByteArrayInputStream bais = new ByteArrayInputStream(str.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);
	}
}
posted on 2019-05-17 10:06  行之间  阅读(198)  评论(0编辑  收藏  举报