Java Desktop System 发行版本 2 管理指南

检测文件的 MIME 类型

应用程序检测文件的 MIME 类型的方法如下所示:

  1. 应用程序使用文件内容探测指令在文件中搜索一个特定样式。文件内容探测指令将文件中的一个特定样式与一种 MIME 类型相关联。如果应用程序找到了与该样式相匹配的项,则该文件的 MIME 类型就是与该样式相关联的 MIME 类型。

  2. 如果内容探测指令无法确定文件的 MIME 类型,那么应用程序可以检查文件名。应用程序将根据 MIME 类型注册表检查文件名。MIME 类型注册表将特定的文件扩展名和文件名样式与特定的 MIME 类型相关联。如果找到了与该文件名相匹配的项,则该文件的 MIME 类型就是与该扩展名或样式相关联的 MIME 类型。

下文提供了有关文件内容探测指令和 MIME 类型注册表的详细信息。

文件内容探测指令

文件内容探测指令在文件 /etc/gnome-vfs-mime-magic 中指定。以下是文件内容探测指令的一个示例:

0	string		\x89PNG					image/png

文件内容探测指令的语法如下所示:

offset_start[:offset_end] pattern_type pattern [&pattern_mask] type

表 5–1介绍文件内容探测指令中的各个字段。

表 5–1 文件内容探测指令中的字段

字段 

说明 

offset_start

指定在文件中搜索文本样式之前要忽略的字符数。 

pattern_type

指定要搜索的样式类型。发布本指南时,string 样式类型是唯一受支持的样式类型。

pattern

指定要搜索的样式。 

pattern_mask

指定样式掩码,格式为十六进制。有关样式掩码的更多信息,请参阅下一节。

此字段是可选的。上面的示例中没有此字段。 

type

指定与此项匹配的文件的相应 MIME 类型。 

样式掩码

样式掩码标识在文件中搜索样式时忽略样式中的哪些数据位。下面是一个带有样式掩码的文件内容探测指令的示例:

0     string          BMxxxx\000\000 &0xffff00000000ffff      image/bmp

上例中的样式和掩码如下所示:

样式 

B

M

x

x

x

x

\000

\000

掩码 

ff

ff

00

00

00

00

ff

ff

该样式和掩码指定一个具有以下特性的文件:

  1. 文件以 BM 开头。

  2. BM 后面是长度为四个字节的任意值。

  3. 这四个字节后面是 \000\000

这个文件内容探测指令指定:与该样式和掩码匹配的文件的 MIME 类型为 image/bmp

MIME 类型注册表

MIME 类型注册表位于 /usr/share/mime-info。MIME 类型注册表包含以下文件:

文件 

文件扩展名 

MIME 信息文件 

.mime

MIME 键文件 

.keys

下文介绍 MIME 信息文件和 MIME 键文件。

MIME 信息文件

MIME 信息文件将 MIME 类型与以下两项,或两项中的任意一项相关联。

当应用程序搜索文件的 MIME 类型时,应用程序将根据 MIME 信息文件检查文件名。如果找到了与该文件名相匹配的项,则该文件的 MIME 类型就是与该扩展名或样式相关联的 MIME 类型。

在 MIME 信息文件中,要搜索的文件名样式以范式编写。

MIME 信息文件中的 MIME 类型项的格式如下所示:

MIME-type
		ext[,priority]: list-of-extensions
		regex[,priority]: list-of-regular-expressions

可以为文件扩展名和常规表达式指定一个优先级。可以使用优先级来区别复合文件名。例如,您可以对 .gz 扩展名指定优先级 1,对 .tar.gz 扩展名指定更高的优先级 2。在此情况下,文件 abc.tar.gz 会使用 .tar.gz 的 MIME 类型。


注意:

您必须用制表符 (\t) 缩进 ext 字段和 regex 字段。


以下 MIME 类型项是 gnome-vfs.mime MIME 信息文件中的范例:

application/x-compressed-tar
		regex,2: tar\.gz$
		ext: tgz
audio/x-real-audio
		ext: rm ra ram
image/jpeg
		ext: jpe jpeg jpg
image/png
		ext: png
text/html
		ext: html htm HTML
text/plain
		ext: asc txt TXT
text/x-readme
		regex: README.*

注意:

文件管理器将按照字母顺序读取 MIME 信息文件。MIME 信息文件的字母顺序决定将 MIME 类型指定给文件扩展名或范式的顺序。例如,如果对文件 abc.mimedef.mime 中的不同 MIME 类型指定了相同的文件扩展名,则使用 abc.mime 中的 MIME 类型。


MIME 键文件

MIME 键文件提供有关用户界面中使用的一个 MIME 类型的信息。例如,MIME 键文件提供有关某个 MIME 类型的说明,并指定一个图标来表示属于该 MIME 类型的文件。

下面是 MIME 键文件的一个示例:

text/html
		description=HTML page
		icon_filename=gnome-text-html
		default_action_type=application
		short_list_application_ids_for_novice_user_level=mozilla,netscape,galeon
		category=Documents/World Wide Web

注意:

必须使用制表符 (\t) 将 MIME 键文件中的键缩进。


表 5–2介绍 MIME 键文件中最重要的键。通常会本地化 description 键和 category 键。

表 5–2 MIME 键文件中的键

键 

说明 

can_be_executable

指定属于该 MIME 类型的文件是否可以执行。 

description

提供有关该 MIME 类型的说明。这些说明可在文件管理器和其他应用程序中显示。 

icon_filename

指定表示该 MIME 类型的图标的文件名。不指定文件名的路径或文件扩展名。 

该图标可在文件管理器和其他应用程序中显示。 

default_action_type

指定当用户打开属于该 MIME 类型的文件时,执行哪类操作。对于大多数应用程序,应输入该 MIME 类型的相应 application

short_list_application_ids
_for_novice_user_level

指定当用户打开属于该 MIME 类型的文件时,使用哪个应用程序。可以按照优先顺序指定一个或多个应用程序。这些应用程序也必须在应用程序注册表中注册。 

category

为该 MIME 类型指定一个类别。这个键的值决定 MIME 类型在文件关联首选项工具中的位置。