TIKA文件類型檢測
MIME 標準
多用途Internet郵件擴展(MIME)標準,用於識別文件類型的最佳標準。這些標準的知識有助於在內部相互作用的瀏覽器。
當瀏覽器遇到一個媒體文件,它選擇可用它來顯示其內容的兼容軟件。在情況下,它不具有任何合適的應用程序,以運行一個特定媒體文件,它建議用戶獲得合適的插件軟件。
Tika類型檢測
Tika支持MIME所提供的所有互聯網媒體文件類型。每當一個文件通過Tika檢測到該文件,其文件類型。檢測的介質類型,Tika內部通過以下機制。
文件擴展名
檢查文件擴展名是檢測的文件的格式的最簡單和最廣泛使用的方法。許多應用程序和操作系統提供這些擴展的支持。下面所示是一些已知文件類型的擴展名。
文件名
擴展名
image
.jpg
audio
.mp3
java archive file
.jar
java class file
.class
內容類型提示
每當從數據庫中檢索文件或將其附加到另一個文檔,可能會失去該文件的名稱或擴展名。在這種情況下,該文件所提供的元數據被用於檢測文件的擴展名。
魔術字節
遵守文件的原始字節,可以爲每個文件找到一些獨特的字符模式。一些文件具有特殊的字節前綴稱爲被專門製成幷包含在一個文件中,用於識別文件類型的目的魔術字節。
例如,可以找到CA FE BA在一個PDF文件(十六進制格式)的一個java文件和PDF%(ASCII格式)。 Tika使用此信息來識別的文件的媒體類型。
字符編碼
文件純文本使用不同類型的字符編碼的編碼。這裏的主要挑戰是確定在文件中使用的字符編碼的類型。Tika 一樣的標記和字節的頻率來識別所使用的純文本內容的編碼系統字符編碼技術。
XML根字符
爲了檢測XML文檔,Tika解析XML文檔並提取,如根元素,命名空間和引用的架構,從文件的真實介質類型,可以找到的信息。
使用Facade類類型檢測
facade類的detect() 方法被用於檢測文檔類型。這個方法接受一個文件作爲輸入。下面顯示的是文件類型檢測與Tika外觀類的示例程序。
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