我有一个InputStream,我从中读取字符.我想让多位读者访问这个InputStream.看来,实现这一目标的合理方法是将传入的数据写入StringBuffer或StringBuilder,并让多个读取器读取.不幸的是,不推荐使用StringBufferInputStream. StringReader读取一个字符串,而不是一个不断更新的可变对象.我有什么选择?写我自己的
解决方法
输入流这样工作:一旦你读了一部分,它就会永远消失.你不能回去重读它.你可以做的是这样的:
class InputStreamSplitter { InputStreamSplitter(InputStream toReadFrom) { this.reader = new InputStreamReader(toReadFrom); } void addListener(Listener l) { this.listeners.add(l); } void work() { String line = this.reader.readLine(); while(line != null) { for(Listener l : this.listeners) { l.processLine(line); } } } } interface Listener { processLine(String line); }
让所有有兴趣的方面实施侦听器并将其添加到InputStreamSplitter