如何从内容类型获取文件扩展名?

问题描述:

我正在使用Apache Tika,并且我有需要重新命名为具有反映内容类型的扩展名的特定内容类型的文件(没有扩展名)。如何从内容类型获取文件扩展名?

任何想法,如果有什么我可以使用,而不是基于内容类型名称从头开始编程?

你想看看文件蒂卡-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); 

两个重点班为你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