outputStream转inputStream
下文笔者讲述OutputStream转inputStream的方法大全,如下所示
方法一:使用byte array缓存转换
ByteArrayOutputStream baos = new ByteArrayOutputStream(); ByteArrayInputStream inputStream = new ByteArrayInputStream(baos.toByteArray()); 使用以上方法,需注意baos.toByteArray()方法运行以前 数据需完全写入
方法二:使用Pipes
PipedInputStream in = new PipedInputStream();
PipedOutputStream out = new PipedOutputStream(in);
new Thread(
new Runnable(){
public void run(){
class1.putDataOnOutputStream(out);
}
}
).start();
class2.processDataFromInputStream(in);
注意事项:
PipedInputStream中存储数据的数组大小默认为1024
使用过程中不可扩充
当一次性写入的数据超过这个数,则会有个AssertionError抛出
当然,我们可以在初始化PipedInputStream的时候进行设置。
PipedOutputStream out = new PipedOutputStream();
PipedInputStream in = new PipedInputStream(out);
方法三:使用Circular Buffers
<!-- https://mvnrepository.com/artifact/org.ostermiller/utils -->
<dependency>
<groupId>org.ostermiller</groupId>
<artifactId>utils</artifactId>
<version>1.07.00</version>
</dependency>
CircularByteBuffer cbb = new CircularByteBuffer();
new Thread(
new Runnable(){
public void run(){
class1.putDataOnOutputStream(cbb.getOutputStream());
}
}
).start();
class2.processDataFromInputStream(cbb.getInputStream());
从以上的示例中,可以得出第一种方法 是我们常用的方法
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


