虽然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了。 方...
方法一:使用byte array缓存转换 代码示例如下 ByteArrayOutputStream baos=newByteArrayOutputStream();ByteArrayInputStream swapStream=newByteArrayInputStream(baos.toByteArray()); 这种方式最为简单,但是要求执行baos.toByteArray()这个方法之前,需要的数据已经完全写入,即无法做到边写边读,另外其需要足够的内存来一...
使用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...
// 将outputstream转成inputstream ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray()); FileOutputStream fos = new FileOutputStream("D:\\test\result.rar"); ZipOutputStream zip = new ZipOutputStream(fos); // 生成压缩文件 ...
我正处于开发阶段,我有两个模块,从一个模块中我得到了 OutputStream 和第二个模块的输出,它只接受 InputStream 。你知道如何将 OutputStream 转换为 InputStream (反之亦然,我的意思是这样)我将能够连接这两个部分? 谢谢 原文由 Waypoint 发布,翻译遵循 CC BY-SA 4.0 许可协议 java...
转换类代码如下: importjava.io.IOException;importjava.io.InputStream;importjava.io.OutputStream;publicclassInputOutputTransferStreamextendsInputStream{privatebyte[]buffer=newbyte[4096];privateintbyteLength=0;privatebooleanwriteOver=false;privatebooleanreadOver=false;privateInputOutputStreamoutputStream=newInputOutp...
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 发布,...
关于JavaDoc的更多评论,包括以下语句的InputStream.transferTo(OutputStream)方法: “此方法不会关闭任何一个流。” “强烈建议在发生I / O错误时立即关闭两个流。” 处理上面显示的两个问题的最简单方法是在InputStream.transferTo(OutputStream)方法的Javadoc注释中表达的方法是在try-with-resources语句中实例化源Inpu...