TIKA - 文档类型检测
MIME 标准
多用途 Internet 邮件扩展 (MIME) 标准是识别文档类型的最佳可用标准。了解这些标准可以帮助浏览器进行内部交互。
每当浏览器遇到媒体文件时,它都会选择可用的兼容软件来显示其内容。如果没有任何合适的应用程序来运行特定媒体文件,它建议用户为其获取合适的插件软件。
Tika 中的类型检测
Tika 支持 MIME 中提供的所有互联网媒体文档类型。每当文件通过 Tika 时,它都会检测该文件及其文档类型。为了检测媒体类型,Tika 在内部使用以下机制。
文件扩展名
检查文件扩展名是检测文件格式最简单且最广泛使用的方法。许多应用程序和操作系统都提供对这些扩展的支持。下面显示的是一些已知文件类型的扩展名。
文件名 | 延伸 |
---|---|
图像 | .jpg |
声音的 | .mp3 |
java归档文件 | 。罐 |
java类文件 | 。班级 |
内容类型提示
每当您从数据库检索文件或将其附加到另一个文档时,您可能会丢失文件的名称或扩展名。在这种情况下,随文件提供的元数据用于检测文件扩展名。
魔字节
观察文件的原始字节,您可以找到每个文件的一些独特的字符模式。有些文件具有特殊的字节前缀,称为魔术字节,它们是专门制作并包含在文件中的,用于识别文件类型
例如,您可以在 java 文件中找到 CA FE BA BE(十六进制格式),在 pdf 文件中找到 %PDF(ASCII 格式)。Tika 使用此信息来识别文件的媒体类型。
字符编码
纯文本文件使用不同类型的字符编码进行编码。这里的主要挑战是识别文件中使用的字符编码类型。Tika 遵循Bom 标记和字节频率等字符编码技术来识别纯文本内容使用的编码系统。
XML 根字符
为了检测 XML 文档,Tika 解析 xml 文档并提取信息,例如根元素、命名空间和引用模式,从中可以找到文件的真实媒体类型。
使用 Facade 类进行类型检测
Facade 类的detector ()方法用于检测文档类型。此方法接受文件作为输入。下面显示的是使用 Tika Facade 类进行文档类型检测的示例程序。
import java.io.File; import org.apache.tika.Tika; public class Typedetection { public static void main(String[] args) throws Exception { //assume example.mp3 is in your current directory File file = new File("example.mp3");// //Instantiating tika facade class Tika tika = new Tika(); //detecting the file type using detect method String filetype = tika.detect(file); System.out.println(filetype); } }
将上述代码保存为 TypeDetection.java 并使用以下命令从命令提示符运行它 -
javac TypeDetection.java java TypeDetection audio/mpeg