无法使用Apache Tika读取zip文件

时间:2014-06-30 17:16:55

标签: java zip apache-tika

我使用Apache Tika 1.5来解析zip文件中的内容,

这是我的示例代码

    Parser parser = new AutoDetectParser();
    ParseContext context = new ParseContext();
    context.set(Parser.class, parser);
    ContentHandler handler = new DefaultHandler();
    Metadata metadata = new Metadata();
    InputStream stream = null;
    try {
        stream = TikaInputStream.get(new File(zipFilePath));
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
    try {

        parser.parse(stream, handler, metadata, context);

        logger.info("Content:\t" + handler.toString());
    } catch (IOException e) {
        e.printStackTrace();
    } catch (SAXException e) {
        e.printStackTrace();
    } catch (TikaException e) {
        e.printStackTrace();
    } finally {
        try {
            stream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
我在logger语句中看到

是org.xml.sax.helpers.DefaultHandler@5bd8e367

我遗失了一些东西,无法弄明白, 寻求帮助

1 个答案:

答案 0 :(得分:2)

首先,您需要确保拥有所有正确的罐子。您可以在类路径中仅使用tika-core jar调用Apache Tika,但它无法通过解析方式执行此操作。对于解析,您需要tika-coretika-parsers以及所有依赖项。最简单的方法就是使用Maven,它会为你处理它。

否则,您的代码中会出现一个有问题的行:

ContentHandler handler = new DefaultHandler();

如果你想要文件的纯文本,我建议使用:

ContentHandler handler = new BodyContentHandler();

如果你想要XHTML版本,那么你会想要类似的东西:

ContentHandler handler = new ToXMLContentHandler();

最后,如果您想控制如何提取/处理zip文件中的嵌入文档,请查看Tika Wiki for Recursion上的示例