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


     

  • 相关阅读:
    控制C++的类只能在堆分配或只能在栈分配
    static 相关随笔
    虚拟继承
    虚函数和纯虚函数有以下所示方面的区别(转)
    构造函数 析构函数
    标准C++中有没有接口和纯抽象类的概念?(转)
    抽象类和接口(转)
    如何快速正确的安装 Ruby, Rails 运行环境
    NSRunLoop
    UIImagePickerController之死因 .
  • 原文地址:https://www.cnblogs.com/yuwenfeng/p/3080075.html
Copyright © 2011-2022 走看看