zoukankan      html  css  js  c++  java
  • 用Tika读取文件(不需要考虑文件格式)

    不需要考虑文件格式,用Tika包。

    package com.geni_sage.gdme.core.dataReader;
    
    import java.io.*;
    import java.util.Arrays;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    import org.apache.tika.Tika;
    import org.apache.tika.io.TikaInputStream;
    import org.apache.tika.metadata.Metadata;
    
    public class TikaManager {
    
        private Metadata metadata;
    
        private String content;
    
        private boolean isRepalceBlank = false;
    
        public TikaManager(File file, boolean isReplaceBlank) throws Exception {
            metadata = new Metadata();
    
            TikaInputStream stream = TikaInputStream.get(file, metadata);
            try {
                Tika tika = new Tika();
                tika.setMaxStringLength(Integer.MAX_VALUE);
                content = tika.parseToString(stream, metadata);
    
            } finally {
                stream.close();
            }
            this.isRepalceBlank = isReplaceBlank;
        }
    
        public String getContent() {
            if (isRepalceBlank) {
                return replaceBlank(content);
            } else {
                return content;
            }
    
        }
    
        public Metadata getMetadata() {
            return metadata;
        }
    
        public String getMetadataString() throws Exception {
            return metadataToString();
        }
    
        private String metadataToString() throws Exception {
    
            StringBuilder metadataBuffer = new StringBuilder();
    
            String[] names = metadata.names();
            Arrays.sort(names);
            for (String name : names) {
                metadataBuffer.append(name);
                metadataBuffer.append(": ");
                metadataBuffer.append(metadata.get(name));
                metadataBuffer.append("\n");
            }
    
            return metadataBuffer.toString();
        }
    
        private String replaceBlank(String str) {
            String dest = "";
            if (str != null) {
                // Pattern p = Pattern.compile("\\s*|\t|\r|\n");
                Pattern p = Pattern.compile("\n");
                Matcher m = p.matcher(str);
                dest = m.replaceAll("");
            }
            return dest;
        }
    }


     

  • 相关阅读:
    只知道参数名,要从对象里面获取值,可以使用反射机制获取
    mysql创建存储过程,批量建表分表00到99
    讲讲个人对于系统重构的一些心得
    浅谈线程runnable和callable的使用及区别
    springboot项目线程使用2
    springboot项目线程使用
    推荐一个算法网站
    Centos7.3安装和配置jre1.8转
    向java高级工程师和项目经理的道路进发【转】
    linux 查看日志命令
  • 原文地址:https://www.cnblogs.com/yuwenfeng/p/3080075.html
Copyright © 2011-2022 走看看