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;
        }
    }


     

  • 相关阅读:
    css 设置特定宽度,超出部分用...代替
    php 二维数组根据某个key去重
    一些大厂开源项目
    JavaScript如何解析本地xml文件
    console的知识点
    toLocalDateString的用途
    在Vue中使用Object.freeze
    淘宝npm镜像
    JavaScript Async/Await
    vue中的addEventListener和removeEventListener
  • 原文地址:https://www.cnblogs.com/yuwenfeng/p/3080075.html
Copyright © 2011-2022 走看看