Tika简单实例应用

1、Maven pom.xml

创建Maven项目,添加以下依赖

	<!-- https://mvnrepository.com/artifact/org.apache.tika/tika-core -->
        <dependency>
            <groupId>org.apache.tika</groupId>
            <artifactId>tika-core</artifactId>
            <version>1.20</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.tika/tika-parsers -->
        <dependency>
            <groupId>org.apache.tika</groupId>
            <artifactId>tika-parsers</artifactId>
            <version>1.20</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.tika/tika-app -->
        <dependency>
            <groupId>org.apache.tika</groupId>
            <artifactId>tika-app</artifactId>
            <version>1.20</version>
        </dependency>

2、Java类

package cn.hadron.tikademo.util;

import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.AutoDetectParser;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.sax.BodyContentHandler;
import java.io.File;
import java.io.FileInputStream;

public class TikaUtil {

    public static String parse(String filePath) throws Exception{
        return parse(filePath,10*1024*1024);
    }

    public static String parse(String filePath,int limit) throws Exception{
        File file=new File(filePath);
        if(!file.exists()){
            System.out.println("目标文件不存在!");
            return null;
        }
        BodyContentHandler handler=null;
        if(limit>10*1024*1024) {
            handler = new BodyContentHandler(limit);
        }else{
            handler = new BodyContentHandler(10 * 1024 * 1024);
        }
        Metadata meta=new Metadata();
        FileInputStream input=new FileInputStream(file);
        ParseContext context=new ParseContext();
        new AutoDetectParser().parse(input,handler,meta,context);
        return handler.toString();
    }

    public static void main(String[] args) throws Exception {
        String content=TikaUtil.parse("D:\\tika\\a.doc");
        System.out.println(content);
    }
}

程序说明:
默认可读取10万以内个字符文档,如果文档文件过大,则报错。
org.apache.tika.sax.WriteOutContentHandler$WriteLimitReachedException: Your document contained more than 100000 characters, and so your requested limit has been reached. To receive the full text of the document, increase your limit. (Text up to the limit is however available).
解决办法:
通过BodyContentHandler()有参构造器,设置更大的字符数限制。比如10 * 1024 * 1024,可读取1000万左右的字符文档。

 new BodyContentHandler(10 * 1024 * 1024);

3、运行效果

在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Tika可以与Spring框架中的MultipartFile对象一起使用,以处理上传的文件。MultipartFile是Spring提供的用于处理HTTP请求中的文件上传的接口。 要在Tika中处理MultipartFile对象,您需要将其转换为File对象,然后使用Tika进行解析。下面是一个简单的示例代码: ```java import org.apache.tika.Tika; import org.springframework.web.multipart.MultipartFile; import java.io.File; import java.io.IOException; public class TikaExample { public static void main(String[] args) { MultipartFile multipartFile = ...; // 获取上传的MultipartFile对象 // 将MultipartFile对象转换为File对象 File file = new File(multipartFile.getOriginalFilename()); try { multipartFile.transferTo(file); // 使用Tika解析文件 Tika tika = new Tika(); String mimeType = tika.detect(file); String content = tika.parseToString(file); System.out.println("MIME Type: " + mimeType); System.out.println("Content: " + content); } catch (IOException e) { e.printStackTrace(); } finally { // 删除临时文件 file.delete(); } } } ``` 在上面的示例中,我们首先将MultipartFile对象转换为File对象,然后使用Tika进行文件解析。您可以根据需要获取文件的MIME类型或提取文本内容。 请注意,上述示例中的`...`部分表示您需要根据您的具体情况获取实际的MultipartFile对象。还要确保您已经添加了Tika和Spring的相关依赖项。 希望这可以帮助到您!如果您有任何进一步的问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值