一、高速入门

1、Tika是一个用于文本解释的框架。其本身并不提供不论什么的库用于解释文本,而是调用各种各样的库,如POI,PDFBox等。

使用Tika。能够提取文件里的作者、标题、创建时间、正文等内容,相比于java.io自带的一些功能(如FileInputStream,FIleReader,Scanner等):

(1)若文档为纯文本,如txt,html,java文件等。则二者对于文件内容的提取基本无区别,都可将内容呈现出来。

(2)若文档为富文本,如office,pdf等。使用java.io直接读取内容会得到一串乱码,而须要通过种种工具去提取正文内容。如PDFBox提取PDF文件,POI提取office文件等。

TIka已将各种工具作了统一封装,形成统一的API,用于提取文本正文。



但注意:解释文本

上述步骤仅仅是将正文内容提取了出来,如将word文档、Html文档等的正文提取出来,但未对文档正文的内容进行解释,此时须要用到其他的工具如:

(1)DOM4J用于提取XML正文中的内容,如某个元素或者属性的值。

(2)HtmlPaser用于提取HTML正文中的内容,也是提取无素或者属性的值。比方提取文中的超链接等。

Tika是否已经完毕此功能的封装还不确认。以后再研究。

2、使用GUI界面解释文本

(1)进入Tika全部的文件夹。执行下面命令:

java -jar "tika-app-1.5 (1).jar" -g

(2)Tika的图形界面被打开。然后找开File-openURL:

(3)点击确认后。即返回解释结果

默认情况下显示的是文本的元信息

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvamVkaWFlbF9sdQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

(4)能够通过view菜单中的选项,分别查看 metadata, formatted text, plain text, main content, stuctured text等信息。

3、调用API解释文件

package com.ljh.test;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream; import org.apache.tika.exception.TikaException;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.AutoDetectParser;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.parser.Parser;
import org.apache.tika.sax.BodyContentHandler;
import org.xml.sax.ContentHandler;
import org.xml.sax.SAXException; public class TikaBasicUtil { public String fileToTxt(File f) {
//1、创建一个parser
Parser parser = new AutoDetectParser();
InputStream is = null;
try {
Metadata metadata = new Metadata();
metadata.set(Metadata.RESOURCE_NAME_KEY, f.getName());
is = new FileInputStream(f);
ContentHandler handler = new BodyContentHandler();
ParseContext context = new ParseContext();
context.set(Parser.class,parser);
//2、运行parser的parse()方法。
parser.parse(is,handler, metadata,context);
for(String name:metadata.names()) {
System.out.println(name+":"+metadata.get(name));
}
return handler.toString();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (TikaException e) {
e.printStackTrace();
} finally {
try {
if(is!=null) is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
} }

測试程序例如以下:

package com.ljh.test;

import java.io.File;

import org.junit.Test;

public class TikaBasicUtilTest {

	@Test
public void test() {
TikaBasicUtil tbu = new TikaBasicUtil();
System.out.println(tbu.fileToTxt(new File("D:/G组-C罗压哨助攻扳平 葡萄牙2-2美国保晋级希望.docx")));
} }

输出结果例如以下:

cp:revision:3

meta:last-author:lujinhong

Last-Author:lujinhong

meta:save-date:2014-06-23T04:24:00Z

Application-Name:Microsoft Office Word

dcterms:created:2014-06-23T04:23:00Z

Author:lujinhong

Application-Version:15.0000

Character-Count-With-Spaces:1188

date:2014-06-23T04:24:00Z

Total-Time:1

extended-properties:Template:Normal.dotm

meta:line-count:8

creator:lujinhong

publisher:

Word-Count:177

meta:paragraph-count:2

Creation-Date:2014-06-23T04:23:00Z

extended-properties:AppVersion:15.0000

meta:author:lujinhong

Line-Count:8

extended-properties:Application:Microsoft Office Word

resourceName:G组-C罗压哨助攻扳平 葡萄牙2-2美国保晋级希望.docx

Paragraph-Count:2

Last-Save-Date:2014-06-23T04:24:00Z

Revision-Number:3

meta:creation-date:2014-06-23T04:23:00Z

dcterms:modified:2014-06-23T04:24:00Z

Template:Normal.dotm

Page-Count:1

meta:character-count:1013

dc:creator:lujinhong

meta:word-count:177

Last-Modified:2014-06-23T04:24:00Z

extended-properties:Company:

modified:2014-06-23T04:24:00Z

xmpTPg:NPages:1

extended-properties:TotalTime:1

dc:publisher:

Character Count:1013

meta:page-count:1

meta:character-count-with-spaces:1188

Content-Type:application/vnd.openxmlformats-officedocument.wordprocessingml.document

上半时美国队开球。第5分钟。葡萄牙队领先进球,维罗索左路45度把球吊入禁区,美国后卫卡梅伦解围失误,纳尼在远门柱附近右脚抽射球门上角建功,葡萄牙1-0美国。

第9分钟,邓普西突破被断。无队友接应。第11分钟,美国长传反击。科斯塔头球解围。第12分钟。阿尔维斯铲倒约翰逊。美国队获得禁区前随意球,邓普西主罚大力攻门。球擦着横梁高出。

第16分钟,葡萄牙中锋波斯蒂加受伤,被埃德换下。第18分钟。美国右路传中。邓普西禁区左肋抽射打高。

第24分钟。美国队后场断球反击,布拉德利禁区前抽射,球擦着横梁高出。第27分钟。祖西传球,邓普西禁区右肋抽射,科斯塔堵枪眼。1分钟后,布拉德利远射稍偏。第32分钟,美国反击。约翰逊远射打偏。第34分钟,维罗索远射打在后卫身上,C罗拿球被吹越位。

第35分钟,C罗远射被霍华德扑住。

第40分钟,琼斯受伤,主裁判吹停比赛,进入喝水时间。

第42分钟,葡萄牙反击。C罗分球。纳尼右路远射被扑出。第43分钟。葡萄牙获得禁区前随意球,C罗主罚打高。第45分钟,纳尼远射打中立柱。埃德补射被霍华德用指尖挡出。上半时结束,葡萄牙1-0美国。

下半时易边,葡萄牙队用卡瓦略换下阿尔梅达。第48分钟,卡梅伦解围打在队友被贝斯勒身上。埃德抢射打高。第55分钟,美国队错失良机,约翰逊右路下底传中,布拉德利5码处推射,科斯塔门线堵枪眼。第62分钟,葡萄牙反击,C罗禁区右肋射门打偏。

第64分钟,美国队扳平比分,角球罚出被后卫解围出禁区。琼斯外围拿球横向闪过纳尼,右脚大力抽射,球飞进球门死角。葡萄牙1-1美国。

第66分钟,葡萄牙反击。纳尼右路传中,远端梅雷莱斯抽射被门将扑出。

第68分钟,葡萄牙用完第三个换人名额。瓦雷拉换下梅雷莱斯。第74分钟,纳尼突入禁区摔倒,裁判没有吹罚点球。

1分钟后,琼斯滑铲放倒穆蒂尼奥。吃到黄牌。

第80分钟,纳尼右路禁区前横切远射打高。

第81分钟。美国队反超比分。琼斯中路分球,叶德林右路下底传中,布拉德利12码处推射打在后卫身上,祖西左路拿球传中。邓普西用胸口把球撞进空门,美国2-1葡萄牙。

第86分钟,维罗索直塞,C罗在越位位置完毕射门。葡萄牙右路起球。C罗头球攻门顶偏。第93分钟,葡萄牙左路起球,C罗头球顶偏。

第95分钟。C罗右路传中,瓦雷拉头冲顶破门,2-2!全场结束,美国2-2葡萄牙。

葡萄牙(433):22-贝托/21-佩雷拉、2-阿尔维斯、13-科斯塔、19-A-阿尔梅达(46'卡瓦略)/8-穆蒂尼奥、4-维罗索、16-梅雷莱斯(68'瓦雷拉)/17-纳尼、23-波斯蒂加(16'埃德)、7-C罗

美国(4231):1-霍华德/7-比斯利、5-贝斯勒、20-卡梅伦、23-F-约翰逊/15-贝克曼、13-琼斯/19-祖西(91'冈萨雷斯)、11-贝多亚(72'叶德林)、4-布拉德利/8-邓普西(87'沃多洛斯基)

【Tika基础教程之中的一个】Tika基础教程的更多相关文章

  1. 【solr基础教程之中的一个】Solr相关知识点串讲

           Solr是Apache Lucene的一个子项目.Lucene为全文搜索功能提供了完备的API.但它仅仅作为一个API库存在.而不能直接用于搜索. 因此,Solr基于Lucene构建了一 ...

  2. Scapy基础学习之中的一个

    关于Scapy Scapy的是一个强大的交互式数据包处理程序(使用python编写). 它可以伪造或者解码大量的网络协议数据包,可以发送.捕捉.匹配请求和回复包等等.它可以非常easy地处理一些典型操 ...

  3. jquery-mobile 学习笔记之中的一个(基础属性)

    写在前面 本文是依据w3c 学习轨迹,自己研习过程中记录下的笔记,仅仅供自己学习轨迹记录之用,不喜勿喷. 0 引入库 引入相应的文件: <link rel="stylesheet&qu ...

  4. 【spring教程之中的一个】创建一个最简单的spring样例

    1.首先spring的主要思想,就是依赖注入.简单来说.就是不须要手动new对象,而这些对象由spring容器统一进行管理. 2.样例结构 如上图所看到的,採用的是mavenproject. 2.po ...

  5. 【Lucene4.8教程之中的一个】使用Lucene4.8进行索引及搜索的基本操作

    版权声明:本文为博主原创文章.转载请注明来自http://blog.csdn.net/jediael_lu/ https://blog.csdn.net/jediael_lu/article/deta ...

  6. Objective-C(十九、通知-消息发送模式之中的一个)——iOS开发基础

    结合之前的学习笔记以及參考<Objective-C编程全解(第三版)>,对Objective-C知识点进行梳理总结. 知识点一直在变.仅仅是作为參考.以苹果官方文档为准~ 十九.通知-消息 ...

  7. 深度学习与CV教程(2) | 图像分类与机器学习基础

    作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/37 本文地址:http://www.showmeai.tech/article-det ...

  8. ASP.NET Core 基础教程总结 - ASP.NET Core 基础教程 - 简单教程,简单编程

    原文:ASP.NET Core 基础教程总结 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 基础教程总结 ASP.NET Core 基础教程总算是有了个简单 ...

  9. ASP.NET Core 基础教程-约定 - ASP.NET Core 基础教程 - 简单教程,简单编程

    原文:ASP.NET Core 基础教程-约定 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 基础教程-约定 因为 ASP.NET Core 是可以跨平台的 ...

随机推荐

  1. android开发游记:ItemTouchHelper 使用RecyclerView打造可拖拽的GridView

    以下是RecyclerView结合ItemTouchHelper实现的列表和网格布局的拖拽效果. 效果图例如以下:(gif图有点顿卡,事实上执行是非常流畅的) demo下载地址: DragRecycl ...

  2. python判断一个单词是否为有效的英文单词?——三种方法

    For (much) more power and flexibility, use a dedicated spellchecking library like PyEnchant. There's ...

  3. C#篇(三)——函数传参之引用类型和值类型

    首先应该认清楚在C#中只有两种类型: 1.引用类型(任何称为"类"的类型) 2.值类型(结构或枚举) 先来认识一下引用类型和值类型的区别: 函数传参之引用类型: 1.先来一个简单的 ...

  4. caffe(2) 数据层及参数

    要运行caffe,需要先创建一个模型(model),如比较常用的Lenet,Alex等, 而一个模型由多个屋(layer)构成,每一屋又由许多参数组成.所有的参数都定义在caffe.proto这个文件 ...

  5. linux上将另一个文件内容快速写入正在编辑的文件内

    一.我们看到 www 目录下有两个文件.like.php 内有一行字母,而 loo.php 内什么也没有. 二 .我们来编辑 loo.php. 三.用下面的命令将 like.php 的内容复制到 lo ...

  6. js对浏览器产生的影响

     Js 是单线程执行引擎.在我们动态修改一些属性时会产生两种效果:    1.Repaint ----- 一部分重画,修改 div 的颜色呀,但是尺寸没有改变.    2.Reflow ---- 元素 ...

  7. 免费录屏软件之OBS Studio

    好久没有再博客活动啦,今天给大家推荐一下录屏软件吧!首先我个人最喜欢的OBS Studio就说说它吧 1.免费.开源.功能强大.易上手 ​ ​ ​ 下面是下载地址: 官网下载 : https://ob ...

  8. Linux中常用命令(文件与目录)

    1.pwd 查看当前目录(Print Working Directory) 2.cd 切换工作目录(Change Directory) (1)格式:cd [目录位置] 特殊目录: .当前目录 ..上一 ...

  9. echarts 绑定事件重复执行问题。

    网上所有,先调用.off 方法后再调用.on 绑定事件. 无效果,查看api未发现off方法,于是采用,先删除原先元素,后重新生成的方式. 场景描述. 用户查询时,每次结果都对应一张饼图.该张饼图绑定 ...

  10. python web开发 框架 模板 MVC

    我是跟着廖雪峰老师学习的,对于我这样的纯小白来说,跟着他的网站学习,简直是被妈妈抱在怀里一样无忧无虑,这样的学习本来没有记录下来的必要,但是由于我的粗心大意,经常会出现一些错误,所以我决定把这些错误记 ...