ByteArrayInputStream,参数为初始的字节数组initBytes(初始数据),通过此流将初始的字节数组,经过一定的缓冲区,一部分一部分读出来( while len=read(bytes) != -1)
    ByteArrayOutputStream,无参数, write方法不断通过缓冲区写入字节流,最终 bos.toByteArray(),输出所有字节

    File -> FileOutputStream(写字符)
    File -> FileOutputStream(写字符) -> BufferedOutputStream(写字节)
    File -> FileOutputStream(写字符) -> OutputStreamWriter -> BufferedWriter

    FILE -> FileWriter(写字符)
    FILE -> FileWriter -> BufferedWriter(写字符) 最快写文本 和等效File -> FileOutputStream(写字符) -> OutputStreamWriter -> BufferedWriter FileWriter的父类就是OutputStreamWriter,他俩都是实现Writer类
    byte[]-> ByteArrayOutputStream

    https://www.dandelioncloud.cn/article/details/1408062094016987137 FileOutputStream和FileWriter和FileWriter性能比较
    https://blog.csdn.net/iloki/article/details/122252668 各种方法比较 FileWriter的父类就是OutputStreamWriter,他俩都是实现Writer类,从这点上来说,方法4和6几乎没区别
    https://blog.csdn.net/ruby_one/article/details/81744794 关于BufferedInputStream和FileInputStream的区别

    https://blog.csdn.net/shennyuan/article/details/76607278 FileOutputStream 与 BufferedOutputStream 的区别

    1. ![image.png](https://cdn.nlark.com/yuque/0/2022/png/12623163/1652666379916-0b375e8f-a86c-47b5-bf8d-257d991461e7.png#clientId=u989af8b3-6ce1-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=249&id=u17b366e9&margin=%5Bobject%20Object%5D&name=image.png&originHeight=249&originWidth=969&originalType=binary&ratio=1&rotation=0&showTitle=false&size=24759&status=done&style=none&taskId=u977e1fe1-99fe-473a-8cc0-8d163e78aa9&title=&width=969)<br /> 总结:
    2. FileOutputStream 文件输出流 ,无缓冲区,write一次,就往文件里面写一次数据,效率较低。
    3. BufferedOutputStream 缓存输出流, 缓存区默认大小为8192byte,可通过构造函数定义。 write方法将数据写入缓存区中,缓存区满时写入文件。 flush方法将缓存区的数据写入文件。高效。