我使用

Apache Tika,它使用魔术字节模式和globbing提示(文件扩展名)来识别文件类型,以检测MIME类型.它还支持对文件内容的其他解析(我不真正使用).

以下是一个简单而肮脏的例子,说明如何使用Tika来检测文件类型,而不对文件执行任何额外的解析:

import java.io.File;

import java.io.FileInputStream;

import java.io.InputStream;

import java.util.HashMap;

import org.apache.tika.Metadata.HttpHeaders;

import org.apache.tika.Metadata.Metadata;

import org.apache.tika.Metadata.TikaMetadataKeys;

import org.apache.tika.mime.MediaType;

import org.apache.tika.parser.AutoDetectParser;

import org.apache.tika.parser.ParseContext;

import org.apache.tika.parser.Parser;

import org.xml.sax.helpers.DefaultHandler;

public class Detector {

public static void main(String[] args) throws Exception {

File file = new File("/pats/to/file.xls");

AutoDetectParser parser = new AutoDetectParser();

parser.setParsers(new HashMap());

Metadata Metadata = new Metadata();

Metadata.add(TikaMetadataKeys.RESOURCE_NAME_KEY,file.getName());

InputStream stream = new FileInputStream(file);

parser.parse(stream,new DefaultHandler(),Metadata,new ParseContext());

stream.close();

String mimeType = Metadata.get(HttpHeaders.CONTENT_TYPE);

System.out.println(mimeType);

}

}

java识别文件类型_在Java中识别文件类型相关推荐

  1. java鸭子类型_语言设计中的鸭子类型风格

    在动态语言的世界里一直流传着一种叫做鸭子类型的风格,其来自谚语:"如果行鸭子一样走路,像鸭子一样呱呱叫,那它就是一只鸭子". 从鸭子类型,我们可以联想到它的推导,并不在乎类型的真正 ...

  2. java获取文件目录列表_获取目录中的文件列表

    我正在开发一个C项目,我需要获取目录中的文件列表 . 我正在使用dirent.h但是在使用它时遇到了一些问题,我正在Linux下构建程序 . 当我尝试构建程序时,我收到以下错误 myClass:err ...

  3. 凡是函数中未指定存储类型_凡是函数中未指定存储类型的局部变量,其隐含的存储类别为    。...

    凡是函数中未指定存储类型的局部变量,其隐含的存储类别为 . 答:自动(auto) 婴儿1.5岁-2岁时,使用的句子主要是( ). 答:电报句 监控批量成本预测需要() 答:选择预测所需的成本研究 现行 ...

  4. python中读取文件编码_[转载]python中使用文件的读取编码问题

    原文链接:https://www.cnblogs.com/qianboping/p/6524420.html 今天想写个程序合并文件的,以前一直觉得python的编码解码好烦,只要处理文件合并之类的都 ...

  5. c++ enum 给定类型_讲解C++中的枚举类型以及声明新类型的方法

    C++枚举类型如果一个变量只有几种可能的值,可以定义为枚举(enumeration)类型.所谓"枚举"是指将变量的值一一列举出来,变量的值只能在列举出来的值的范围内.声明枚举类型用 ...

  6. python定位文件位置_在Python中定位文件位置

    tell()方法告诉您文件中的当前位置:换句话说,下一次读取或写入将发生在从文件开头开始的那么多个字节处. seek(offset [,from])方法更改当前文件位置.offset参数指示要移动的字 ...

  7. java.lang.IllegalArgumentException: 字符[_]在域名中永远无效。 at

    [http-nio-8080-exec-1] org.apache.coyote.AbstractProcessor.parseHost [xxx_tomcat] 是无效主机注意:更多的请求解析错误将 ...

  8. python解压到指定文件夹_在Python中压缩和解压文件

    Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 如果你已经使用计算机一段时间,你可能遇到了.zip扩展名的文件.它们是可以保存许多其他文件,文件夹和子文件 ...

  9. java项目----教务管理系统_基于Java的教务管理系统

    java项目----教务管理系统_基于Java的教务管理系统 2022-04-22 18:18·java基础 最近为客户开发了一套学校用教务管理系统,主要实现学生.课程.老师.选课等相关的信息化管理功 ...

  10. java中打开文件显示_从java程序中打开任何文件

    在 java中打开文件似乎有点棘手 – 对于.txt文件,必须将File对象与Scanner或BufferedReader对象结合使用 – 对于图像IO,必须使用 ImageIcon类 – 如果要打开 ...

最新文章

  1. ueditor集成实例php,Laravel框架集成UEditor编辑器的方法图文与实例详解
  2. C#委托-委托不关心被封装的类
  3. c++ 顺序容器list的一个例子
  4. Elasticsearch常用工具清单
  5. Java8学习笔记(三)--方法引入
  6. 迭代器 java_Java设计模式8:迭代器模式
  7. java中doloop语句_Java中的do-while循环——通过示例学习Java编程(11)
  8. CCF CSP202112-1 序列查询
  9. 【白话模型量化系列一】矩阵乘法量化
  10. spring源码-第五个后置处理器笔记
  11. 识别视频文件夹,listview
  12. oracle function详解,Oracle函数用法详解
  13. html5 for vs2008插件,Chart 控件 for vs2008的安装
  14. SI4463实验笔记
  15. 词根词缀整理2019-3-20
  16. 创业青年,想赚钱就下乡去吧
  17. JVM(4)-MAT: 支配树 Dominator Tree
  18. 数据分析的步骤是什么?
  19. 手机视频连接计算机显示器播放,教您使用手机/平板电脑直接在计算机上播放视频...
  20. Android11对比IOS14,iPhone11升级至iOS14,对比苹果iOS13,迎来3大新变化

热门文章

  1. php mysql 超时时间_php mysql超时设置方法
  2. 收集无良医院清单的开源项目,浏览器插件自动提示无良网站!
  3. 皮一皮:到底谁才是渣王...
  4. Spring 的 Controller 是单例还是多例?怎么保证并发的安全
  5. 博客搭建攻略(三):创造收益
  6. rknn 学习资料整理
  7. python 四边形分割
  8. 分割2021PanopticFCN
  9. ubuntu子系统多版本
  10. TypeError: __init__() got an unexpected keyword argument #34serialized_options #34