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());
从以上的示例中,可以得出第一种方法 是我们常用的方法
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。