@ByteArrayOutputStream和ByteArrayInputStream的简单使用
1.首先看下这两个IO流是什么?
ByteArrayOutputStream:字节数组输出流.在内存中创建一个字节数组缓冲区,所有发送到输出流的数据保存在该字节数组缓冲区中。
ByteArrayInputStream:字节数组输入流.在内存中创建一个字节数组缓冲区,从输入流读取的数据保存在该字节数组缓冲区中。
2.java实现文件读入与写出:
package com.example.filedemo.demo;import java.io.*;public class ByteArrayIODemo {public static void main(String[] args) {byte[] bytes = ByteArrayOutputStreamDemo();System.out.println(bytes.length); //62230ByteArrayInputStreamDemo(bytes);}//FileInputStream 把文件数据 读入 内存//ByteArrayOutputStream 把内存中数据 读入 字节数组缓冲区public static byte[] ByteArrayOutputStreamDemo() {byte[] bytes = new byte[1024];int len = -1;//缓冲流提升字节输入流效率;try (BufferedInputStream in = new BufferedInputStream(new FileInputStream("C:\\demo\\picture.jpeg"));ByteArrayOutputStream out = new ByteArrayOutputStream()) {while ((len = in.read(bytes)) != -1) {out.write(bytes, 0, len);}return out.toByteArray();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return null;}// ByteArrayInputStream把byte[] 读入 字节数组缓冲区//FileOutputStream把字节数组缓冲区中数据输出成文件public static void ByteArrayInputStreamDemo(byte[] byteArray) {byte[] bytes = new byte[1024];int len = -1;//try (ByteArrayInputStream in = new ByteArrayInputStream(byteArray);//FileOutputStream 构造方法 第二个属性值 append 为true时,在原有数据上追加数据;append为flase时,覆盖原有数据;BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream("C:\\demo2\\picture.jpeg", true))) {while ((len = in.read(bytes)) != -1) {out.write(bytes, 0, len);}} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}
}