将mime类型映射到友好的人类友好文件类型的Java库或文本文件

时间:2010-09-07 03:30:54

标签: java text types mime-types

GOAL 我的目标是找到一个文本文件或库,使我能够在给定mime类型输入时进行映射,并返回一个友好的人性化格式。

例如,给定Word的mime类型(如下所示),我希望得到类似“Microsoft Office Word Document”的结果。

application/vnd.openxmlformats-officedocument.wordprocessingml.document

我意识到我可以编译自己的列表并使用像Map(Java)这样的东西但是它不会是全面的等等。

简化选项 我知道我可以检查并返回子mime类型并保留最后一个组件,但这不是很复杂,因为上面的Word mime类型结果将是一个非常通用的“文档”。我可以扩展并采用更多组件,但结果仍然非常难看。

KEY / VALUE文件 我试图找到的另一个选项是带有键/值对的文本文件,其中键是完整的mime类型,值是友好的友好文本。

text/plain=Plain Text File
application/octet-stream=Unknown binary file

这似乎是一个不错的选择,但我找不到包含大量条目的权威文本文件。如果仅仅是媒体的源(我更喜欢称之为主要的mime类型),“text / plain”中的“text”也存在,那么一个未知的文本mime类型,例如“text / unknown abc”将会很好返回“未知的文本文件/格式”。

3 个答案:

答案 0 :(得分:3)

Apache Tika支持MimeTypes。如果您不知道mime类型,它还支持Content Detection。无论如何,看起来你需要这样做:

String t = "text/plain";
org.apache.tika.mime.MimeTypes.getMimeType(t).getDescription();

免责声明:我实际上没有尝试过。另外,我不知道它是否支持你需要的所有mime类型。

答案 1 :(得分:1)

答案 2 :(得分:0)

使用此库

这可以通过文件,字节等...

MimeUtil> https://github.com/saces/MimeUtil

用法:

MagicMimeMimeDetector g = new MagicMimeMimeDetector();
Collection<MimeType> list =  g.getMimeTypes(file);

if(list.size() > 0)
{
    MimeType mime = list.iterator().next();
    return mime.toString();
}