我正在使用一个必须提供 InputStream 和 PrintStream 的库。它使用 InputStream 收集数据进行处理,并使用 PrintStream 提供结果。我被困在使用这个库并且它的 API 不能被改变。
我认为有两个问题有相关的解决方案。
首先,需要通过 InputStream 读取的数据是不可用的。相反,数据是由应用程序的不同部分动态创建的,并通过方法调用作为字符串提供给我的代码。我的代码的工作是以某种方式允许库通过我得到它时提供的 InputStream 读取这些数据。
其次,我需要以某种方式获取写入 PrintStream 的结果并将其作为字符串发送到应用程序的另一部分。这需要在将数据尽可能放入 PrintStream 后立即发生。
看起来我需要的是两个流对象,它们的行为或多或少像缓冲区。我需要一个 InputStream ,只要我有它就可以将数据推入其中,还需要一个 PrintStream ,只要它有一些,我就可以抓住它的内容。这对我来说似乎有点尴尬,但我不知道该怎么做。
我想知道是否已经存在任何允许这种行为的东西,或者是否有不同的(更好的)解决方案可以在我描述的情况下工作。我唯一能想到的就是尝试用这种行为实现流,但这会很快变得复杂(特别是因为 InputStream 需要阻塞直到数据可用)。
有任何想法吗?
编辑:要清楚,我不是在写图书馆。我正在编写代码,该代码应该为库提供一个 InputStream 来读取数据和一个 PrintStream 来写入数据。