方法一:使用字节数组缓存数据 最简单的方法是用字节数组缓存数据。代码 1 2 3 4 5 ByteArrayOutputStream out =newByteArrayOutputStream(); class1.putDataOnOutputStream(out); class2.processDataFromInputStream( newByteArrayInputStream(out.toByteArray()) ); 于是,OutputStream就被转换为InputStream了。 方...
虽然Java标准库中没有提供直接将 OutputStream 转换为 InputStream 的方法,但我们可以使用中间存储来实现这一转换。以下是几种常见的转换方法: 1. 使用 ByteArrayOutputStream 和ByteArrayInputStream 这种方法利用内存中的字节数组作为中间存储,将 OutputStream 中的数据写入 ByteArrayOutputStream,然后再通过 ByteArray...
这通过将OutputStream的字节数组获取出来,再用这个字节数组创建ByteArrayInputStream来实现。 importjava.io.ByteArrayInputStream;byte[]byteArray=byteArrayOutputStream.toByteArray();ByteArrayInputStreambyteArrayInputStream=newByteArrayInputStream(byteArray);// 将 ByteArrayOutputStream 中的数据转换为字节数组,然后...
PipedInputStreamin=newPipedInputStream();PipedOutputStreamout=newPipedOutputStream(in);newThread(newRunnable(){publicvoidrun(){class1.putDataOnOutputStream(out);}}).start();class2.processDataFromInputStream(in); 顾名思义,pipe即为管道,这种方法支持流式的方式,一端写一端读,向PipedOutputStream写入的数...
使用ByteArrayStream类进行转换 第二种方法是使用ByteArrayStream进行转换,这种方法会将写出的文件保存在内存中,然后被工具类读取,伪代码如下: ByteArrayOutputStreambaos=newByteArrayOutputStream();// 写入wordObj.write(baos);ByteArrayInputStreambais=newByteArrayInputStream(baos.toByteArray());// 读取UtilB.re...
我正处于开发阶段,我有两个模块,从一个模块中我得到了 OutputStream 和第二个模块的输出,它只接受 InputStream 。你知道如何将 OutputStream 转换为 InputStream (反之亦然,我的意思是这样)我将能够连接这两个部分? 谢谢 原文由 Waypoint 发布,翻译遵循 CC BY-SA 4.0 许可协议 java...
// 将outputstream转成inputstream ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray()); FileOutputStream fos = new FileOutputStream("D:\\test\result.rar"); ZipOutputStream zip = new ZipOutputStream(fos); // 生成压缩文件 ...
为解决上一节提出的问题,本文实现一个字节流转换类,可以直接使用完成以上功能。基本原理是开辟一个缓冲区,通过对缓冲区并发的交互的读写操作实现内存复用和字节流的转换。 转换类代码如下: importjava.io.IOException;importjava.io.InputStream;importjava.io.OutputStream;publicclassInputOutputTransferStreamextendsInput...
你可以更改缓存大小而不必受限于管道缓存区1K的固定缓存大校 多线程情形: CircularByteBuffer cbb = new CircularByteBuffer(); new Thread( new Runnable(){ public void run(){ class1.putDataOnOutputStream(cbb.getOutputStream()); } } ).start(); class2.processDataFromInputStream(cbb.getInp...
//outputStream转inputStreampublicByteArrayInputStream parse(OutputStream out)throwsException { ByteArrayOutputStream baos=newByteArrayOutputStream(); baos=(ByteArrayOutputStream) out; ByteArrayInputStream swapStream=newByteArrayInputStream(baos.toByteArray());returnswapStream; ...