IO_File类使用:字节数组流

ByteAarryInputStream   字节数组输入流
ByteAarryOutputStream  字节数组输出流

字节数组流,跟文件没有关系,完全是在内存里完成操作,只不过是利用IO流的字节的特性可以一个字节一个字节的读取而已;
比如要获取以个字符串中的所有英文字母等等操作
字节数组流:是基于内存操作,内部维护一个字节数组,可以利用流的读取机制来处理字符串,无需关闭流,不会报IO异常

package com.file;
/**
    *  字节数组流:基于内存操作,内部维护一个字节数组
    * ASCII码表大写字母的整型数范围  [65,90];小写字母的整型数范围 [97,122]
    * 
    * 举例:提取一个字符串中小写字母和大写字母,并求出字母的总个数
 */

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

public class ByteArraysStreamDemo {

    public static void main(String[] args) {
        ByteArrayStream();
    }
    
    public static void ByteArrayStream() {
        String info = "1234253254asdfsafdasWFEASFASFDSADF%^&^%&*^%&$#%";
        ByteArrayInputStream bais = new ByteArrayInputStream(info.getBytes());
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        int curr = -1;
        while((curr=bais.read())!=-1) {                             //bais.read() 读取后返回的是一个整型的字节数
            if((curr>=65 && curr<=90) || (curr>=97 && curr<=122)){  //c整型的字节数根据ASCII码表,判断出小写字母和大写字母的范围
                baos.write(curr);                                   //查看源码得知,write(curr)方法会把整型curr转换成字节数,得出的字节数值存入一个字节数组里即这里的baos
            }
        }
        //此时无需关闭流,因为:字节数组流是基于内存的操作流,跟文件没有关系
        System.out.println(baos.toString());
        System.out.println(baos.toString().length());
    }

}

猜你喜欢

转载自blog.csdn.net/weixin_34184158/article/details/87073964