2011-04-04 149 views
8

我正在使用Apache Tika,並且我有需要重新命名爲具有反映內容類型的擴展名的特定內容類型的文件(沒有擴展名)。如何從內容類型獲取文件擴展名?

任何想法,如果有什麼我可以使用,而不是基於內容類型名稱從頭開始編程?

回答

1

你想看看文件蒂卡-mimetypes.xml - >檢查Tika的源代碼和:

org.apache.tika.mime.MimeTypesReader 

    } else if (nodeElement.getTagName().equals(GLOB_TAG)) { 
     boolean useRegex = Boolean.valueOf(nodeElement.getAttribute(ISREGEX_ATTR)); 
     types.addPattern(type, nodeElement.getAttribute(PATTERN_ATTR), useRegex); 

可以工作,那麼機智

org.apache.tika.mime.MimeTypes 

     private Patterns patterns = new Patterns(registry); 
18

兩個重點班爲你MediaTypeRegistryMimeTypes。使用這些,您可以執行MIME類型的基於魔術的檢測,並獲取有關MIME類型及其關係的信息。

TikaConfig config = TikaConfig.getDefaultConfig(); 
// 
InputStream stream = new FileInputStream(file); 
MediaType mediaType = config.getMimeRepository().detect(stream, new Metadata()); 
MimeType mimeType = config.getMimeRepository().forName(mediaType.toString()); 
String extension = mimeType.getExtension(); 

你也可能想看看DefaultDetector在Tika的SVN,它會處理容器知道檢測過。

+0

這應該是'TikaConfig.getDefaultConfig()'。 – mbmast 2016-11-22 07:44:18

+0

@mbmast哎呦,修正了,謝謝! – Gagravarr 2016-11-22 10:35:33

相關問題