📅  最后修改于: 2020-11-10 04:27:09             🧑  作者: Mango
多功能Internet邮件扩展(MIME)标准是识别文档类型的最佳可用标准。这些标准的知识有助于浏览器进行内部交互。
每当浏览器遇到媒体文件时,它都会选择一个与其兼容的兼容软件来显示其内容。如果它没有任何合适的应用程序来运行特定的媒体文件,则建议用户为其获取合适的插件软件。
Tika支持MIME中提供的所有Internet媒体文档类型。每当文件通过Tika传递时,它都会检测到文件及其文档类型。为了检测媒体类型,Tika在内部使用以下机制。
检查文件扩展名是检测文件格式的最简单,最广泛使用的方法。许多应用程序和操作系统都支持这些扩展。下面显示的是一些已知文件类型的扩展名。
File name | Extention |
---|---|
image | .jpg |
audio | .mp3 |
java archive file | .jar |
java class file | .class |
每当您从数据库检索文件或将其附加到另一个文档时,都可能会丢失文件的名称或扩展名。在这种情况下,文件随附的元数据用于检测文件扩展名。
观察文件的原始字节,您可以找到每个文件的一些独特字符模式。某些文件具有特殊的字节前缀,称为魔术字节,是专门制作并包含在文件中的,目的是识别文件类型
例如,您可以在Java文件中找到CA FE BA BE(十六进制格式),而在pdf文件中找到%PDF(ASCII格式)。 Tika使用此信息来识别文件的媒体类型。
具有纯文本的文件使用不同类型的字符编码进行编码。这里的主要挑战是确定文件中使用的字符编码的类型。 Tika遵循Bom标记和字节频率等字符编码技术来标识纯文本内容使用的编码系统。
为了检测XML文档,Tika解析xml文档并提取信息,例如根元素,名称空间和引用的架构,从中可以找到文件的真正媒体类型。
Facade类的detect()方法用于检测文档类型。此方法接受文件作为输入。下面显示的是使用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