欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

内存输出流ByteArrayOutputStream

程序员文章站 2022-06-18 22:38:44
...

一、简介

1.概述

此类实现了一个输出流,其中的数据被写入一个 byte 数组。缓冲区会随着数据的不断写入而自动增长。可使用 toByteArray()toString() 获取数据。

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

2.构造方法

ByteArrayOutputStream()
          创建一个新的 byte 数组输出流。

3.常用方法

void write(int b)
          将指定的字节写入此 byte 数组输出流。
 byte[] toByteArray()
          创建一个新分配的 byte 数组。
 String toString()
          使用平台默认的字符集,通过解码字节将缓冲区内容转换为字符串。
 String toString(String charsetName)
          使用指定的 charsetName,通过解码字节将缓冲区内容转换为字符串。

 二、使用

1.使用场景

FileInputStream读取中文的时候出现了乱码

解决方案:

  1. 字符流读取
  2. ByteArrayOutputStream

2.使用方式

public static void main(String[] args) throws IOException {
   FileInputStream fis = new FileInputStream("e.txt");
   ByteArrayOutputStream baos = new ByteArrayOutputStream();        //在内存中创建了可以增长的内存数组
   
   int b;
   while((b = fis.read()) != -1) {
      baos.write(b);                                //将读取到的数据逐个写到内存中
   }
   
   //byte[] arr = baos.toByteArray();              //将缓冲区的数据全部获取出来,并赋值给arr数组
   //System.out.println(new String(arr));
   
   System.out.println(baos.toString());          
   //将缓冲区的内容转换为字符串,在输出语句中可以省略调用toString方法,底层会默认帮我们调用toString()方法

   fis.close();
}