zoukankan      html  css  js  c++  java
  • 系统学习 Java IO (七)----字节数组流 ByteArrayInputStream/ByteArrayOutputStream

    目录:系统学习 Java IO---- 目录,概览

    ByteArrayInputStream

    如果数据存储在数组中,ByteArrayInputStream 可以很方便读取,它可以返回 InputStream , 这样,ByteArrayInputStream 可以包装字节数组,并将其转换为流。

    构造器

    public ByteArrayInputStream(@NotNull byte[] buf) : 创建一个 ByteArrayInputStream ,以便它使用 buf 作为其缓冲区数组。 pos 的初始值为 0 ,count 的初始值为 buf 的长度。

    注意:关闭 ByteArrayInputStream 无效。此类中的方法在关闭此流后仍可被调用,而不会产生任何 IOException。

    ByteArrayOutputStream

    创建一个新的字节数组输出流。 缓冲区容量最初为32字节,但必要时其大小会增加。

    构造器
    • OutputStream output = new ByteArrayOutputStream(); 创建一个32字节(默认大小)的缓冲区。
    • ByteArrayOutputStream(int size) 创建一个新的 byte 数组输出流,它具有指定大小的缓冲区容量(以字节为单位)。

    可以将数据写入 ByteArrayOutputStream ,完成后,调用 ByteArrayOutputStream 的方法 toByteArray() 以获取字节数组中的所有写入数据。
    byte[] bytes = output.toByteArray();

    同样,关闭 ByteArrayOutputStream 无效。此类中的方法在关闭此流后仍可被调用,而不会产生任何 IOException 。

    如果有一个程序需要将其数据输出到 OutputStream ,但我们需要其返回字节数组的情况下,ByteArrayOutputStream 可以很方便完成任务。

    很明显 ByteArrayOutputStream 是用来缓存数据的,向它的内部自动增长的缓冲区写入数据,再通过 output.toByteArray() 可以从中提取数据。

    一个例子:

    public class ByteArray {
        public static void main(String[] args) throws IOException {
            ByteArrayOutputStream output = new ByteArrayOutputStream();
            output.write("Hello ByteArray".getBytes());
            // 只需调用方法 toByteArray(),所有写入的数据都以数组形式返回。
            byte[] bytes = output.toByteArray();
    
            InputStream input = new ByteArrayInputStream(bytes);
            try {
                int data = input.read();
                while (data != -1) {
                    System.out.print((char) data);
                    data = input.read();
                }
                System.out.println();
            } catch (
                    IOException e) {
                e.printStackTrace();
            }
        }
    }
    
  • 相关阅读:
    6.2.2 RPM包管理-rpm命令管理-安装升级与卸载
    6.2 RPM包管理-rpm命令管理-包命名规则和依赖性
    6.1软件包管理简介
    sql server 2012还原数据库时报错(错误码:3154)
    SQL Server2012安装教程
    常用端口及对应服务
    PING命令排查网络故障思路
    必须掌握的八个DOS命令(转)
    svchost占用内存过高电脑很卡如何解决
    optional的用法
  • 原文地址:https://www.cnblogs.com/czwbig/p/10011875.html
Copyright © 2011-2022 走看看