Java ApacheTika:从归档文件中导出文件名和MIME类型

Java ApacheTika:从归档文件中导出文件名和MIME类型,java,parsing,apache-tika,Java,Parsing,Apache Tika,我希望Tika只输出文件名和MIME类型的文件。 我用递归ParserWrapperHandler找到了一些解决方案,但问题是BodyContentHandler总是尝试解析整个文件,并将文本放到正文内容中。在我的例子中,我只需要Map(fileName,MIMEType)作为返回结果,而不需要解析整个文件。 我该怎么做 static public List<Metadata> recursiveParserWrapperExample() throws IOException,

我希望Tika只输出文件名和MIME类型的文件。 我用递归ParserWrapperHandler找到了一些解决方案,但问题是BodyContentHandler总是尝试解析整个文件,并将文本放到正文内容中。在我的例子中,我只需要Map(fileName,MIMEType)作为返回结果,而不需要解析整个文件。 我该怎么做

 static public List<Metadata> recursiveParserWrapperExample() throws IOException,
        SAXException, TikaException {
    Parser p = new AutoDetectParser();

    ContentHandlerFactory factory = new BasicContentHandlerFactory(
            BasicContentHandlerFactory.HANDLER_TYPE.HTML, -1);
    RecursiveParserWrapper wrapper = new RecursiveParserWrapper(p);
    Metadata metadata = new Metadata();
    metadata.set(TikaCoreProperties.ORIGINAL_RESOURCE_NAME, "test.rar");
    ParseContext context = new ParseContext();
    RecursiveParserWrapperHandler handler = new RecursiveParserWrapperHandler(factory, -1);
    try (InputStream stream = new FileInputStream(new File("C:\\Users\\alex\\home\\projects\\self\\zip\\test.rar"))) {
        wrapper.parse(stream, handler, metadata, context);
    }
    return handler.getMetadataList();
}
static public List recursiveParserWrapperExample()抛出IOException,
特例{
Parser p=new AutoDetectParser();
ContentHandlerFactory=新的基本ContentHandlerFactory(
BasicContentHandlerFactory.HANDLER_TYPE.HTML,-1);
RecursiveParserRapper包装器=新的RecursiveParserRapper(p);
元数据=新元数据();
set(TikaCoreProperties.ORIGINAL_RESOURCE_NAME,“test.rar”);
ParseContext=新的ParseContext();
RecursiveParserWrapperHandler=新的RecursiveParserWrapperHandler(工厂,-1);
尝试(InputStream=新文件InputStream(新文件(“C:\\Users\\alex\\home\\projects\\self\\zip\\test.rar”)){
parse(流、处理程序、元数据、上下文);
}
返回处理程序.getMetadataList();
}

我找到了解决方案,只要改变一下就好了

    ContentHandlerFactory factory = new BasicContentHandlerFactory(
        BasicContentHandlerFactory.HANDLER_TYPE.HTML, -1);


就是这样,现在处理程序将只返回文件中的metdata。

我找到了解决方案,只需更改即可

    ContentHandlerFactory factory = new BasicContentHandlerFactory(
        BasicContentHandlerFactory.HANDLER_TYPE.HTML, -1);

就这样,现在处理程序将只从文件返回metdata