• 系统学习 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();
            }
        }
    }
    
  • 相关阅读:
    del命令
    echo命令
    什么是批处理
    ubuntu禁止ping操作(禁用ICMP协议访问)
    树莓派:raspberry pi 3b
    小tips合集
    吐个槽:bose的售后真心差劲!愧对这个顶级音响产品!
    WinSetupFromUSB
    win7 64位下vs不能以管理员身份运行的问题解决
    vs2010中如何设置Visual Assist方便地使用现成的代码编辑器风格
  • 原文地址:https://www.cnblogs.com/czwbig/p/10011875.html
Copyright © 2020-2023  润新知