你要先理解什么是流stream的概念有点类似于pipe管道,就是你只能看到一段数据,
必须顺序读取,
从开始到结束,
才能访问到全部内容
而且你事先是不知道长度的。所以上述方法,不管哪一种,都是要先把流从inputStream里读取,然后放到outStream里
这个“取”,“放”的动作可以同步,也可以异步
所以就有了上述方法的区别另外上面有些方法是经过包装的,你要追进去,才能看到内部实现
标准做法大致如下: in = openInStream();
out = openOutStream()';
byte[] buff = new byte[1024];
while (in.read(buff) != -1) {
out.write(buff);
}
必须顺序读取,
从开始到结束,
才能访问到全部内容
而且你事先是不知道长度的。所以上述方法,不管哪一种,都是要先把流从inputStream里读取,然后放到outStream里
这个“取”,“放”的动作可以同步,也可以异步
所以就有了上述方法的区别另外上面有些方法是经过包装的,你要追进去,才能看到内部实现
标准做法大致如下: in = openInStream();
out = openOutStream()';
byte[] buff = new byte[1024];
while (in.read(buff) != -1) {
out.write(buff);
}
把数据 写入到 ByteArrayOutStream()这个字节数组中InputStream in = new ByteArrayInputStream(out.toByteArray())
创建 输入流,构造函数中 传递 有数据的字节数组楼主有没有看到,他两用的是同一个 字节数组,只不过 前者out是写入数据,后者in是从里面读数据这样就 所谓 的 OutputStream 转换成 InputStream方法2和方法3 也是一样的; 只要写入数据 和 读取数据是在操作同一个东西就可以了
把数据 写入到 ByteArrayOutStream()这个字节数组中InputStream in = new ByteArrayInputStream(out.toByteArray())