目录:系统学习 Java IO---- 目录,概览html
若是数据存储在数组中,ByteArrayInputStream 能够很方便读取,它能够返回 InputStream , 这样,ByteArrayInputStream 能够包装字节数组,并将其转换为流。java
public ByteArrayInputStream(@NotNull byte[] buf)
: 建立一个 ByteArrayInputStream ,以便它使用 buf 做为其缓冲区数组。 pos 的初始值为 0 ,count 的初始值为 buf 的长度。数组
注意:关闭 ByteArrayInputStream 无效。此类中的方法在关闭此流后仍可被调用,而不会产生任何 IOException。缓存
建立一个新的字节数组输出流。 缓冲区容量最初为32字节,但必要时其大小会增长。学习
OutputStream output = new ByteArrayOutputStream();
建立一个32字节(默认大小)的缓冲区。ByteArrayOutputStream(int size)
建立一个新的 byte 数组输出流,它具备指定大小的缓冲区容量(以字节为单位)。能够将数据写入 ByteArrayOutputStream ,完成后,调用 ByteArrayOutputStream 的方法 toByteArray() 以获取字节数组中的全部写入数据。
byte[] bytes = output.toByteArray();
code
一样,关闭 ByteArrayOutputStream 无效。此类中的方法在关闭此流后仍可被调用,而不会产生任何 IOException 。htm
若是有一个程序须要将其数据输出到 OutputStream ,但咱们须要其返回字节数组的状况下,ByteArrayOutputStream 能够很方便完成任务。blog
很明显 ByteArrayOutputStream 是用来缓存数据的,向它的内部自动增加的缓冲区写入数据,再经过 output.toByteArray()
能够从中提取数据。get
一个例子:input
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(); } } }