这是我的代码:
// getFile() method returns the input stream of a local or online file
InputStream fileStream = getFile(source);
// Convert an InputStream to an InputSource
org.xml.sax.InputSource fileSource = new org.xml.sax.InputSource(fileStream);
// Extract text via the Boilerpipe DefaultExtractor
String text = DefaultExtractor.INSTANCE.getText(fileSource);
// Extract text and metadata via Apache Tika
BodyContentHandler handler = new BodyContentHandler();
Metadata metadata = new Metadata();
ParseContext context = new ParseContext();
AutoDetectParser parser = new AutoDetectParser();
parser.parse(fileStream, handler, metadata, context);
我不明白为什么只有第一个提取器起作用。
在这种情况下,只有Boilerpipe(第一个提取器)工作,而Apache Tika(第二个提取器)无法提取任何东西。
我试图创建fileStream
(via InputStream fileStream2 = fileStream;
) 的副本并传递fileStream
给一个读者和fileStream2
另一个读者,但它也不起作用。
fileStream
我还尝试将从和Tika中提取的 HTML 传递给 Boilerpipe fileStream
,但结果是一样的。
我怀疑问题是InputStream
不能读两次。
你能帮我如何传递 1InputStream
到 2 位读者的内容吗?
编辑: 我找到了解决方案并将其发布在下面