gpt4 book ai didi

java - 将 Jetty 缓冲区转换为 InputStream

转载 作者:行者123 更新时间:2023-11-30 11:49:20 25 4
gpt4 key购买 nike

我必须使用 SAX 从 Jetty 缓冲区的内容中解析 xml。从我的 ContentExchange 我可以调用 getRequestContent,然后我得到一个 Buffer

我需要一个InputStream,或者一个InputSoruce或者一个String或者一个File来解析它使用 SAX。如何将缓冲区转换为其中一种,哪种方式最有效?

看起来很明显,但我在文档中找不到任何信息。

最佳答案

很抱歉回答一个老问题,但将来可能会有人(比如我自己)偶然发现这个问题。

Jetty 的Buffer 类实现了一个writeTo(OutputStream) 方法。一个简单的解决方案是执行以下操作:

PipedInputStream is = new PipedInputStream();
PipedOutputStream os = new PipedOutputStream(is);

然后对于接收到的每个Buffer,做:

void processBuffer(Buffer buf) {
buf.writeTo(os);
}

这样您就可以流式传输响应而无需缓存它们。

编辑:

当然,请确保 processBuffer()PipedInputStream 的读取器在不同的线程中运行,以避免潜在的死锁。

关于java - 将 Jetty 缓冲区转换为 InputStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8432079/

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