我有一个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);
}
让所有相关方实现Listener并将其添加到InputStreamSplitter
问题内容: 我有一个文本文件,其内容如下: 我阅读了文本文件,并逐行进行了遍历: 每行有两个字。Java中是否有任何方法可以获取下一个单词,还是必须将行字符串拆分才能获取单词? 问题答案: 您不必拆分行,因为java.util.Scanner的默认定界符为空格。 您可以只在while语句中创建一个新的Scanner对象。
问题内容: 我已经在一个类的单个方法中初始化了InputStream,并将其传递给下一个方法进行处理。InputStream本质上封装了CSV文件以进行处理。 另一个方法调用传入同一个InputStream的2个不同方法,一个用于检索标头,另一个用于处理内容。该结构如下所示: 我在这里做错什么了吗?有什么方法可以在不同的方法调用之间重用InputStream。 我正在提出可以模仿以下问题的完整程序
我有两个不同的主题要阅读,并将处理后的数据发布到WebService。我有一个条件,我必须完全读取来自topic1的消息,并确保如果没有来自topic1的消息,我必须读取来自topic2的消息并处理它。如果我开始从topic2读取消息并从topic1获取消息,我必须暂停处理来自topic2的消息并从topic1读取消息。 我设法使用KafkalistenerEndpointRegistry实现了这
问题内容: 我收到对我需要解析的http请求的响应。响应的一部分是pdf文件,我需要将其保存到磁盘。有图书馆可以帮我吗? 问题答案: 这是我在常规操作中所做的。所需的Java邮件库:
问题内容: 我想知道,在关闭阅读器之后,是否需要关闭InputStream? 问题答案: 不,您不必。 由于Java中用于流的装饰器方法可以通过将新流或读取器附加到其他流上来构建新流或读取器,因此实现将自动对其进行处理。 如果查看其来源,则会看到: 因此,关闭操作实际上关闭了底层的流读取器。 编辑:我想确保关闭也可以在输入流上工作,请继续关注。 签入 在调用sd的close时调用。
问题内容: 在我的一生中,我一直无法找到与我想做的事情相匹配的问题,因此在这里我将解释我的用例。如果您知道某个主题已涵盖此问题的答案,请随时将我引向该主题。:) 我有一段代码可以定期(每20秒)将文件上传到Amazon S3。该文件是由另一个进程写入的日志文件,因此此功能实际上是尾随日志的一种方式,以便某人可以半实时读取其内容,而不必直接访问日志所在的计算机。 。 直到最近,我只是一直使用S3 P