java的ByteArrayOutputStream类实现了一个输出流,其中的数据被写入一个 byte 数组。缓冲区会随着数据的不断写入而自动增长。可使用toByteArray()和toString()获取数据。使用该类能够将指定文件的数据在内存中进行缓存。
实例:将指定文件的内容读入到内存中,然后转换成一个字节数组。最后通过字符串输出到控制台。
package io.outputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; public class ByteArrayOutputStreamTest { public static void main(String[] args) { FileInputStream input = null; ByteArrayOutputStream output = null; try { input = new FileInputStream(new File("document/output.txt")); output = new ByteArrayOutputStream(2048); // 将从文件读取的数据写入到ByteArrayOutputStream中 byte[] bytes = new byte[1024]; int len = -1; while ( (len = input.read(bytes)) != -1 ) { output.write(bytes, 0, len); } // 从缓冲区中间信息输出 byte[] buffer = output.toByteArray(); System.out.println( new String(buffer) ); } catch(Exception e) { e.printStackTrace(); } finally { if ( null != input ) { try { input.close(); input = null; } catch (IOException e) { e.printStackTrace(); } } } } }
从上面的实例可以看出ByteArrayOutputStream实际上就是一个内存缓冲区,用来将外部文件所有的数据使用byte数组进行缓存。