多用途Internet郵件擴充套件(MIME)標準,用於識別檔案型別的最佳標準。這些標準的知識有助於在內部相互作用的瀏覽器。
當瀏覽器遇到一個媒體檔案,它選擇可用它來顯示其內容的相容軟體。在情況下,它不具有任何合適的應用程式,以執行一個特定媒體檔案,它建議使用者獲得合適的外掛軟體。
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文件,Tika解析XML文件並提取,如根元素,名稱空間和參照的架構,從檔案的真實媒介型別,可以找到的資訊。
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