Java IO ByteArrayInputStream和ByteArrayOutputStream

来源:互联网 发布:阿里云视频点播 编辑:程序博客网 时间:2024/05/21 17:02
ByteArrayInputStream是字节数组输入流。它继承于InputStream。它包含一个内部缓冲区,该缓冲区包含从流中读取的字节;通俗点说,它的内部缓冲区就是一个字节数组,而ByteArrayInputStream本质就是通过字节数组来实现的。ByteArrayInputStream 的内部额外的定义了一个计数器,它被用来跟踪 read() 方法要读取的下一个字节。关闭 ByteArrayInputStream 无效。此类中的方法在关闭此流后仍可被调用,而不会产生任何 IOException。

例子:

public static void main(String[] args) throws Exception{        String tempStr="ASDASXXAS";        ByteArrayInputStream byteArrayInputStream=new ByteArrayInputStream(tempStr.getBytes());        ByteArrayOutputStream byteArrayOutputStream=new ByteArrayOutputStream();        int temp;        while ((temp=byteArrayInputStream.read())!=-1){            char c= (char) temp;            byteArrayOutputStream.write(Character.toLowerCase(c));        }        byteArrayInputStream.close();        byteArrayOutputStream.close();        System.out.println(byteArrayOutputStream.toString());    }

ByteArrayOutputStream 是字节数组输出流。它继承于OutputStream。
ByteArrayOutputStream 中的数据被写入一个 byte 数组。缓冲区会随着数据的不断写入而自动增长。可使用 toByteArray() 和 toString() 获取数据。

例子:

private static void test2() throws IOException {        String tempStr = "ASDASXXAS";        ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(tempStr.getBytes());        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();        int temp;        while ((temp = byteArrayInputStream.read()) != -1) {            char c = (char) temp;            byteArrayOutputStream.write(Character.toLowerCase(c));        }        byteArrayInputStream.close();        byteArrayOutputStream.close();        System.out.println(byteArrayOutputStream.toString());        // 计算长度        int size = byteArrayOutputStream.size();        System.out.printf("size=%s\n", size);        // 转换成byte[]数组        byte[] buf = byteArrayOutputStream.toByteArray();        String str = new String(buf);        System.out.printf("str=%s\n", str);        // 转换成byte[]数组        String str2 = byteArrayOutputStream.toString();        System.out.printf("byteArrayOutputStream=%s\n", str2);        // 将byteArrayOutputStream写入到另一个输出流baos中        try {            ByteArrayOutputStream baos = new ByteArrayOutputStream();            byteArrayOutputStream.writeTo(baos);            System.out.printf("baos=%s\n", baos);        } catch (IOException e) {            e.printStackTrace();        }    }
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 手机接收信号不好怎么办 联网电视无信号怎么办 win7浏览器删了怎么办 ie浏览器删了怎么办 网络电视连接失怎么办 网络电视没信号怎么办 转让店铺后悔了怎么办 蘑菇街没有流量怎么办 淘宝店没有生意怎么办 蘑菇街直播封号怎么办 淘宝忘记给赠品怎么办 直通车的占比高怎么办 赠品质量有问题怎么办 淘宝赠品有问题怎么办 顾客叫送赠品怎么办 淘宝展现量低怎么办 dw模板不更新怎么办 闭水试验漏水怎么办 绘声绘影试用过了怎么办 探探被选成试用新版用户怎么办 淘宝被限制评论怎么办 信用钱包套路了怎么办 农业银行还贷迟了一天怎么办 淘宝限购一件怎么办 小米盒子电视打不开怎么办 手机淘宝总是卡怎么办 淘宝相机不能用怎么办 作业盒子没声音怎么办 作业盒子闪退怎么办 双面羊绒缩水了怎么办 作业盒子为静音怎么办 没有上进心的人怎么办 孩子不听老人话怎么办 淘宝分销没有视频怎么办 孕妇血糖稍高怎么办 苹果6s 卡怎么办 花呗额度用完怎么办 手机百度网站无法访问怎么办 手机应用删不了怎么办 华为p4屏幕切换怎么办 手机搜不到设置怎么办