gpt4 book ai didi

java - 如何减少InputStreams和OutputStreams之间的写入?

转载 作者:行者123 更新时间:2023-11-30 06:53:26 26 4
gpt4 key购买 nike

我有以下用例:

  • 从服务读取InputStream
  • 遍历InputStream并替换一些内容,结果存储在OutputStream
  • 现在我需要继续使用从 OutputStream 创建的 InputStream

这是我现在使用的代码:

InputStream resourceStream = service.getStream();
ByteArrayOutputStream output = new ByteArrayOutputStream();
replace(resourceStream, output, ...);
resourceStream.close();
resourceStream = new ByteArrayInputStream(out.toByteArray());

大量的转移和转换流,所以我想知道是否有更干净的解决方案。也许一些可以用作输入流的输出流,或者包含写入内容的输入流的输出流到。

最佳答案

无论您使用单个对象来写入和读取数据的想法有多好,InputStreamOutputStream 的实现都已作为“类”而不是“接口(interface)”。

此外,由于在 Java 中,单个子类无法扩展多个 super 类,因此在单个类中同时具有输入和输出流操作的梦想仍然只是一个梦想。

也就是说,留给程序员的唯一选择是创建一个类,将 InputStream 和 OutputStream 暴露给其客户端。类似于 java.net.Socket 的功能。它公开了一个 getInputStream 和一个 getOutputStream,它们在逻辑级别上读取和写入同一个“套接字”。

所以,你可以这样做:

public class IOStreamWrapper {

byte[] streamData;

public InputStream getInputStream() {
// return an inputstream that reads from streamData[]
}

public OutputStream getOutputStream() {
// return an outputstream that writes to streamData[]
}

}

引用文献:

Java InputStream

Java OutputStream

<小时/>

希望这有帮助!

关于java - 如何减少InputStreams和OutputStreams之间的写入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42276603/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com