有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在多个部分中解析和索引一个大文件,以便在inputstream中读取一个文件时消耗更少的内存?

我使用Tika Apache Parserparse一个文件elastic search来索引一个文件

假设我有一个需要解析的文档文件。下面是代码示例:

public String parseToPlainText() throws IOException, SAXException, TikaException {
    BodyContentHandler handler = new BodyContentHandler();

    InputStream stream = ContentHandlerExample.class.getResourceAsStream("test.doc");
    AutoDetectParser parser = new AutoDetectParser();
    Metadata metadata = new Metadata();
    try {
        parser.parse(stream, handler, metadata);
        return handler.toString();
    } finally {
        stream.close();
    }
}   

正如你们所见,这是一个测试。文档文件已被读取,如果文件大小过大,则可能导致outofmemoryerror。我需要我可以在input-streams的小夹头中读取文件,并且parser.parse(stream, handler, metadata);可以接受这些流块。我还有一个问题是,文件可以是任何类型。那么我如何在chuck of streams中分割文件parser如何接受它呢? 重要的是,每个文件都应该作为单个文件编制索引,甚至在最后编制索引时分割成块


共 (0) 个答案