Library目录
Library是一个特殊的目录,用于存储特定的应用程序和特定的系统资源。每个文件系统域都有其自身Library目录的副本,这些Library目录具有不同的访问级别以匹配不同的域类型。虽然一个应用程序可以使用这个目录来存储内部数据或临时文件,但将应用程序的束自身或是用户数据文件存放在Library目录中将是不足取的。应用程序的束应放在一个/Applications目录中,而用户数据应放在用户的home目录中。
Library包含了许多标准的子目录。系统例程要求许多标准子目录必须存在,因此删除Library的子目录决不是一个好主意。然而,当需要存储特定的应用程序数据时,应用程序可以创建一个新的子目录。
Application Support
特定应用程序的第三方插件,帮助程序,模板和其他资源。按规定,这些项目应被放置在以应用程序命名的子目录中。举个列子,应用程序MyApp的第三方资源将被放在ApplicationSupport/MyApp/中。注意,一个由应用程序开发者创建的资源应被放置在自己的应用程序包中。更多信息请参见“应用程序包”一章节。
Assistants
帮助用户完成配置和其它任务的程序。
Audio
声音插件和设备驱动。
ColorPickers
根据某一模式取色的资源,例如HLS (Hue Angle, Saturation, Lightness) 取色器或RGB取色器。
ColorSync
ColorSync描述和脚本
Components
系统中的插件和扩展。
document.tion
文档文件和Apple的帮助包(在子目录Help中),计算机上的用户和管理员可以使用它们。在本地域中,这个目录包含了Apple安装的帮助包(包括开发者文档)。
Extensions
设备驱动和其他内部扩展(仅为系统域)。
Favorites
时常被访问的文件夹,文件或Web站点的替身(仅为用户域)。
Fonts
用于显示和打印的字体文件。
Frameworks
框架和共享库。
Internet
用于Internet的插件,库和过滤器。
Keyboards
键盘定义。
Mail
包含了用户的邮箱(仅为用户域)。
Preferences
用户预置,请参见“系统预置”一章中的“用户配置”一节。
Printers
打印驱动(由厂商提供)和PPD插件。
QuickTime
QuickTime的插件和扩展。
Scripting Additions
扩充了AppleScript功能的脚本及脚本资源。
Sherlock Plug-ins
扩充了Sherlock功能的插件。
Sounds
系统警告声。
StartupItems
在启动时运行的系统及第三方的脚本和程序,更多信息请参见“引导和登入”一章中“启动项目”一节。
Web Server
Web 服务器的内容,这个目录包含了CGI脚本以及所备置的Web页面。
——————————————————————
Developer目录
用于开发Mac OSX软件的应用程序,工具,文档及其他资源是一个可选的软件安装包。当您安装开发工具时,安装程序会把所有软件组件放到位于启动卷(/MacOS X)的Developer目录中。
Applications
用户管理和建立软件项目(Project Builder),创建用户界面(InterfaceBuilder)和执行调试程序的应用程序。
document.tion
开发者文档
Examples
分类组织的项目实例(Carbon,Java等等)。
Headers
特殊的头文件,诸如:遗留的简单 Carbon头文件。
Java
在Cocoa应用程序环境中用于Java桥接所需的文件。
Makefiles
用于建立和改变项目所需的makefile(.make文件)和jamfile(.jam文件)。
Palettes
Apple 提供的Interface Builder的调色板。
PBBundles
Project Builder使用的可装载的束。
ProjectBuilder Extras
Project Builder的模板和插件。
ProjectTypes
Project Builder使用的项目类型的定义
Tools
命令行开发工具,包括那些创建和生成HFS资源分支的工具。
ProjectBuilder定义了一组makefile变量,当您的项目在文件系统域中指定位置时,应该会使用到它们。您应该使用这些变量而不是将目录路径硬编码,因为这些位置可能会被改变。
——————————————————————
Classic环境的目录
Classic环境包含了几个用于支持Classic应用程序的目录。这些Classic环境下的目录是一个Mac OS9安装版本中的目录。Mac OS X 需要为Classic环境安装一个 Mac OS9.1(或更新的版本)。如果一个系统安装了一个比Mac OS 9更早的版本,用户必须安装一个更新的版本来支持Mac OSX。
一个系统可能有多个Mac OS9版本安装在不同的分区上。如果是这种情况,系统预置的Classic设置面板将让用户为Classic环境选择使用其中的一个Mac OS9版本。用户第一次启动Classic时,系统会将一些必要的文件附加到被选取的Mac OS9卷的系统文件夹内。您也可以使用系统预置中的Classic设置面板随时启动或停止Classic运行环境。用户还可以使用“启动磁盘(StartupDisk)”系统预置来改变启动磁盘,以从Mac OS X变为直接启动进入Mac OS 9。
当您在一个卷上安装了Mac OS9.1(或更新的版本)时,安装程序会创建几个目录来存储系统文件。表9-6列出了安装程序创建的目录以及关于其内容的描述。如果您已经安装了一个MacOS X 和 Mac OS 9.1(或更新)的本版,Mac OS 9 的安装程序可能不会创建所有这些目录。
Applications (Mac OS 9)
包含了Mac OS 9(Classic)的应用程序和实用工具。
document.
包含了特定应用程序的信息。这个目录只能由Classic应用程序使用。Mac OSX应用程序会在适当的/Library目录中存储预置和其他应用程序文件。用户应该把他们的文档存放在他们自己的home目录当中。
System Folder
包含了Classic环境的系统文件。
当您在一个已经装有Mac OS 9的系统上安装Mac OS X时,安装程序会执行一些额外的任务来支持Classic环境。尤其MacOS X安装程序会创建一个Mac OS 9桌面文件夹的替身,并把它放在可以运行安装程序的管理员用户的桌面上。这个替身包含了在MacOS X 安装之前Mac OS 9桌面上任何文件的链接。
本地化目录名
如果您的应用程序包安装了任何用户支持的目录,那么您不但可以为应用程序提供本地化名称,而且也可以为这些目录提供本地化名称。本地化您特定的应用程序目录名是不必要的,而且可能并不是所有情况下都是有效的。如果您想本地化您的应用程序支持的目录,您应该仅为那些您应用程序预先知晓其名称的目录进行本地化。不建议本地化“用户特定”的目录名。
要本地化目录名,您必须为目录名加上.localized扩展并将其默认设置为隐藏。然后在您的目录中再创建一个名为.localized的子目录。在这个子目录中,为您想支持的每个本地化版本创建一个strings文件。strings文件包含了目录名的本地化版本的单一入口。举个例子,一个用English,,Japanese和German本地化的Release Notes目录将包含以下结构
Release Notes.localized/
en.strings
de.strings
ja.strings
在每个strings文件当中,您要把非本地化目录名转变成本地化目录名。举个例子,要转换目录名“ReleaseNotes”成为一个本地化目录名,每个strings文件都要包含类似以下的条目。
"Release Notes" = "Localized name"
注意:许多系统定义的目录在他们的名称里并不包含.localized扩展名。因为这些目录在引入本地化文件系统名之前已经存在。对于这些已知的目录,MacOS X转而在目录中查找名为.localized的空文件。如果此文件存在,那Mac OS X就会显示其本地化目录名文本。
——————————————————————
HFS+ 和 UFS的不同点
在Mac OS X的两种主要文件系统:HFS+和UFS上,有着许多重要的不同点。在许多情况下,这些不同会与在Mac OSX上开发的程序有关联。以下列表总结了在这两个文件系统中的主要不同点(有些陈述既适用于HFS又适用于HFS+):
大小写敏感:UFS对大小写是敏感的,而HFS+对大小写不敏感,但它可以保留大小写。
多分支:HFS+支持多分支(和附加的元数据)而UFS只支持单一分支(Carbon在不支持多分支的系统“如:UFS”上模似多分支结构)。
路径分隔符:HFS+使用冒号作为路径分隔符,而UFS中使用的则是正斜杠。系统能够在这些分隔符间进行转换。
修改日期:HFS+支持对文件的创建和修改日期的记录,它们将作为文件元数据被保存;而UFS只支持对文件修改日期的记录,不支持对文件创建日期的记录。如果您用一条命令来复制一个文件,这条命令将会处理修改日期,但不会处理创建日期,当它为一个副本创建一个新的文件时,这条命令将会重设其修改日期。由于这一原因,很可能会使一个文件的创建日期要比其修改日期更晚。
Sparse文件和零填充:UFS支持sparse文件(稀疏文件),它是一种文件系统存储文件数据的方法,其不存储分配给文件的未被使用的空间。HFS+不支持sparse文件,事实上可以用"零"为文件填充所有未使用的字节直到文件结束。
对文件系统项目的轻量级引用:请见“替身和符号连接”一节。
另外,那些已往与每种文件系统相关联的API有时会具有不同的特性。举个例子,一个使用了BSD(或来源于BSD)API的程序可以删除一个打开着的文件;而另一方面,一个Carbon程序只可以删除一个已关闭的文件。
——————————————————————
替身和符号连接
替身和符号连接是对文件夹和目录的轻量级引用。替身与Mac OS标准格式(HFS)和Mac OS扩展格式(HFS+)相关联,而符号连接是UFS文件系统的一个特征。替身和符号连接都允许对文件夹和目录多次引用,而不需要为这些项目建立多份副本。MacOS X 10.2之前,当移动或改变一个被引用的文件或文件夹时,替身和符号连接在处理方式上会有很大不同。
原先,替身首先用文件夹和目录的唯一标识来定位他们,其次才是用他们的路径。如果您在同一个卷上移动一个文件,任何指向那个文件的替身仍会指向原本那个位置。假如您删除某个文件,并用一个同名的文件代替它,替身仍可以工作,因为他们可以用路径来定位文件。而从MacOS X 10.2起,替身颠倒了其搜索顺序,先使用路径后使用文件标识。
因为替身和符号连接都使用一个文件系统路径来断定文件位置,因此他们都提供了类似的基本工作方式。如果您用一个同名文件替换某个文件,把旧文件移到新的位置上,替身和符号连接都将指向新的文件。然而,如果您移动某个文件而不是替换它,符号连接会产生文件中断,但替身则不会。
在HFS和HFS+文件系统中,每个文件和目录都会具有一个唯一的固定标识。替身存储了这个唯一标识以及文件或目录的路径信息。如果不能通过替身中的路径信息来找到文件,替身则会试图使用其唯一标识来定位文件。如果找到了文件,替身会用新的路径信息更新其内部记录。同样,如果路径正确,而唯一标识有错误,替身也会用新文件唯一标识来更新其内部记录。
如今Finder和其他系统应用程序用先查找路径的方式来使用替身。然而,通过使用AliasManager(替身管理器)的方法来处置替身时,将仍会使用先根据文件唯一标识来查找的方式。
如果您的应用程序支持Mac OS X 10.2以前的Mac OS X版本,则当您修改文件时应该遵守某些准则。首先,当需要编辑文件时,可修改已有的文件。其次,如果您明显需要用一个新版本来替换某个文件,可用F***changeObjects来将旧的文件替换成新的。NSdocument.用一种类似的方法来更新文档文件。因此,无论何时替身都能保持有效。