zoukankan      html  css  js  c++  java
  • 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);
    	}
    }
  • 相关阅读:
    Docker
    内存与缓存
    硬盘和内存的关系
    磁盘和硬盘、软盘
    mysql和redis的区别
    BZOJ 3110 k大数查询 (树套树)
    Codeforces 1303E Erase Subsequences (子序列匹配)
    Codeforces 1304E 1-Trees and Queries (树上距离+思维)(翻译向)
    BZOJ 2161 布娃娃(权值线段树)
    2019icpc徐州现场赛 H Yuuki and a problem (树状数组套主席树)
  • 原文地址:https://www.cnblogs.com/zxfei/p/10879815.html
Copyright © 2011-2022 走看看