虽然Java标准库中没有提供直接将 OutputStream 转换为 InputStream 的方法,但我们可以使用中间存储来实现这一转换。以下是几种常见的转换方法: 1. 使用 ByteArrayOutputStream 和ByteArrayInputStream 这种方法利用内存中的字节数组作为中间存储,将 OutputStream 中的数据写入 ByteArrayOutputStream,然后再通过 ByteArray...
方法一:使用字节数组缓存数据 最简单的方法是用字节数组缓存数据。代码 1 2 3 4 5 ByteArrayOutputStream out =newByteArrayOutputStream(); class1.putDataOnOutputStream(out); class2.processDataFromInputStream( newByteArrayInputStream(out.toByteArray()) ); 于是,OutputStream就被转换为InputStream了。 方...
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...
3. 转换为ByteArrayInputStream 写完数据后,我们需要将ByteArrayOutputStream中的数据转换成InputStream。这通过将OutputStream的字节数组获取出来,再用这个字节数组创建ByteArrayInputStream来实现。 importjava.io.ByteArrayInputStream;byte[]byteArray=byteArrayOutputStream.toByteArray();ByteArrayInputStreambyteArrayInput...
ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray()); FileOutputStream fos = new FileOutputStream("D:\\test\result.rar"); ZipOutputStream zip = new ZipOutputStream(fos); // 生成压缩文件 ZipUtils.add(zip, in, "template-res.doc", true); ...
我正处于开发阶段,我有两个模块,从一个模块中我得到了 OutputStream 和第二个模块的输出,它只接受 InputStream 。你知道如何将 OutputStream 转换为 InputStream (反之亦然,我的意思是这样)我将能够连接这两个部分? 谢谢 原文由 Waypoint 发布,翻译遵循 CC BY-SA 4.0 许可协议 java...
为解决上一节提出的问题,本文实现一个字节流转换类,可以直接使用完成以上功能。基本原理是开辟一个缓冲区,通过对缓冲区并发的交互的读写操作实现内存复用和字节流的转换。 转换类代码如下: importjava.io.IOException;importjava.io.InputStream;importjava.io.OutputStream;publicclassInputOutputTransferStreamextendsInput...
public static long copyLarge(InputStream input, OutputStream output) throws IOException { byte[] buffer = new byte[4096]; long count = 0L; int n = 0; while (-1 != (n = input.read(buffer))) { output.write(buffer, 0, n); count += n; } return count; } 原文由 Thomas 发布,...
1. new ByteArrayOutputStream(); 2. class1.putDataOnOutputStream(out); 3. class2.processDataFromInputStream( 4. new ByteArrayInputStream(out.toByteArray()) 5. ); 1. 2. 3. 4. 5. 这样就行了,OutputStream已经转换为InputStream。