【发布时间】:2017-11-29 19:02:16
【问题描述】:
这是我的代码:
// 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 的副本(通过InputStream fileStream2 = fileStream;)并将fileStream 传递给一位读者,将fileStream2 传递给另一位读者,但它也不起作用。
我还尝试将提取自fileStream 和fileStream 的 HTML 传递给 Boilerpipe,但结果是一样的。
我怀疑问题是同一个InputStream不能被读取两次。
您能帮我如何将 1 个InputStream 的内容传递给 2 个读者吗?
编辑: 我找到了解决方案,并在下面发布了它
【问题讨论】:
标签: java inputstream apache-tika boilerpipe