Java IO之字节数组流

版权声明:LemonSnm https://blog.csdn.net/LemonSnm/article/details/89847750

字节数组流:

基于内存操作,内部维护着一个字节数组,我们可以利用流的读取机制来处理字符串

无需关闭

无文件无关,借鉴流的一个一个字节读取的机制,来操作字符串 

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());	
	}
	

}

猜你喜欢

转载自blog.csdn.net/LemonSnm/article/details/89847750