一、结构
java.lang.Object
—java.io.InputStream
—java.io.ByteArrayInputStream
官方说明:ByteArrayInputStream 包含一个内部缓冲区,该缓冲区包含从流中读取的字节。
java.lang.Object
—java.io.OutputStream
—java.io.ByteArrayOutputStream
官方说明:此类实现了一个输出流,其中的数据被写入一个 byte 数组。缓冲区会随着数据的不断写入而自动增长。
二、构造方法
public ByteArrayOutputStream()
ByteArrayInputStream(byte[] buf)
三 、ByteArrayOutputStream中重要方法
public byte[] toByteArray():用来合并读取输入流中的数据
public String toString():从输入流缓冲区内容解码的字符串
四、代码实例
public class Test {
public static void main(String[] args) {
String s = "好好学习,天天向上";
byte[] b = s.getBytes();
ByteArrayInputStream bai = new ByteArrayInputStream(b);
ByteArrayOutputStream bao = new ByteArrayOutputStream();
int t = bai.read();
while (t != -1) {
bao.write(t);
t = bai.read();
}
System.out.println(bao);// 调用toString的方法
}
}
输出结果为:好好学习,天天向上
合并读取文件:利用输出流的toByteArray()方法
public class Test {
public static void main(String[] args) {
String s = "好好学习,天天向上";
String s2 = "goodgoodtudy,daydayup";
byte[] b = s.getBytes();
byte[] b2 = s2.getBytes();
ByteArrayInputStream bai = new ByteArrayInputStream(b);
ByteArrayInputStream bai2 = new ByteArrayInputStream(b2);
ByteArrayOutputStream bao = new ByteArrayOutputStream();
int t = bai.read();
while (t != -1) {
bao.write(t);
t = bai.read();
}
int t2 = bai2.read();
while (t2 != -1) {
bao.write(t2);
t2 = bai2.read();
}
**// 现在是所有数据都保存在了输出流中**
byte[] data = bao.toByteArray();
System.out.println(new String(data));
}
}
输出结果: 好好学习,天天向上goodgoodtudy,daydayup