本章目标 完成本章内容之后我们将能够: ▣了解Symbian OS对文件的操作 ▣掌握Symbian OS生成资源文件方法
2 完成本章内容之后我们将能够: ❑了解Symbian OS对文件的操作 ❑掌握Symbian OS生成资源文件方法 本 章 目 标
概述 本章综述一组文件相关的主题,从存档系统本身到 资源和位图文件。对于如此广泛的一组主题,不可能面 面俱到。不过,我们的目的是提供主要的信息和一些能 够有效使用该系统的实例
3 概述 本章综述一组文件相关的主题,从存档系统本身到 资源和位图文件。对于如此广泛的一组主题,不可能面 面俱到。不过,我们的目的是提供主要的信息和一些能 够有效使用该系统的实例
文件名称及其操作 Symbian0S文件由文件规范标识,最多为256个字符。 和在DOS中一样,文件规范由下列部分组成: ●设备或驱动器,例如c: ●路径,例如叭Document\Unfiled八,其中目录名称由 反斜杠(“\”)分开。 ●文件名称。 ●可选文件扩展名,由点号(“.”)与文件名分开。 存档系统支持最多26个驱动器,从a:到z:。在 Symbian OS手机上,z:驱动器总是保留为系统ROM,c: 驱动器总是内部读写驱动器。不过,在一些手机上,它 可能只有有限的容量。d:以后的驱动器可以是内部的, 也可以包含可移动介质。不应该假定可以写入全部驱动 器:除了z:, 许多手机拥有一个或多个只读驱动器
5 文件名称及其操作 Symbian OS文件由文件规范标识,最多为256个字符。 和在DOS中一样,文件规范由下列部分组成: ⚫设备或驱动器,例如c:。 ⚫路径,例如\Document\Unfiled\,其中目录名称由 反斜杠(“\”)分开。 ⚫文件名称。 ⚫可选文件扩展名,由点号(“.”)与文件名分开。 存档系统支持最多26个驱动器,从a:到z:。在 Symbian OS手机上,z:驱动器总是保留为系统ROM,c: 驱动器总是内部读写驱动器。不过,在一些手机上,它 可能只有有限的容量。d:以后的驱动器可以是内部的, 也可以包含可移动介质。不应该假定可以写入全部驱动 器:除了z:,许多手机拥有一个或多个只读驱动器
文件名称及其操作 按照对于文件规范中对长度的总体限制, 目录名、 文件名或扩展名可以是任意长度。存档系统保存这种名 称的大小写,但是对于名称的全部操作与大小写无关。 显然,这意味着,在同一个目录中,不能有两个或更多 文件的名称只是部分字母大小写不同。除驱动器外,在 其他组成部分中,文件规范可以包含通配符“?”(单个 字符)和“*”(任意字符序列)
6 文件名称及其操作 按照对于文件规范中对长度的总体限制, 目录名、 文件名或扩展名可以是任意长度。存档系统保存这种名 称的大小写,但是对于名称的全部操作与大小写无关。 显然,这意味着,在同一个目录中,不能有两个或更多 文件的名称只是部分字母大小写不同。除驱动器外,在 其他组成部分中,文件规范可以包含通配符“?”(单个 字符)和“*”(任意字符序列)
文件名称及其操作 尽管大多数Symbian OS应用程序不这么做,但可以 在文件的规范中包括文件扩展名。Symbian OS应用程序 不依赖扩展名确定文件类型。相反,它们使用一个或多 个存储在文件内的UID保证文件类型匹配应用程序。 文件名称使用TParse类和它的成员函数来构造和操 作。例如,为了设置TParse3实例包含文件规范C: Documents\Oandx\Oandx.dat,可以使用: LIT(KFileSpec,"C:\\Documents\\Oandx\\Oandx.dat ) TParse fileSpec; fileSpec.Set(KFileSpec,NULL,NULL)
7 文件名称及其操作 尽管大多数Symbian OS应用程序不这么做,但可以 在文件的规范中包括文件扩展名。Symbian OS应用程序 不依赖扩展名确定文件类型。相反,它们使用一个或多 个存储在文件内的UID保证文件类型匹配应用程序。 文件名称使用TParse类和它的成员函数来构造和操 作。例如,为了设置TParse实例包含文件规范C: \Documents\Oandx\Oandx.dat,可以使用: _LIT(KFileSpec,"C:\\Documents\\Oandx\\Oandx.dat"); TParse fileSpec; fileSpec.Set(KFileSpec,NULL,NULL);
文件名称及其操作 在这段代码之后,可以调用TParse的getter函数, 确定该文件规范的不同组成部分。例如, filespec.Drive(O包含字符串“C:”, fileSpec.Path()包含\Documents\Oandx” Set()函数使用3个文本参数,从上面代码已经看到, 第一个参数是TDesC引用,包含要解析的文件规范。第二 个和第三个参数是指向其他两个TDesC描述符的指针,其 中一项或两项可以是NULL。第二个参数(相关的文件规范) 如果存在,它指向的文件规范用于提供第一个文什规范 中缺少的组成部分。如果使用了第三个参数,它应该指 向默认文件规范,从中获取第一个和第二个参数未提供 的组成部分。路径、文件名或扩展名可以包含通配符 “ 或“*”,分别表示任意单个字符或任意字符序列
8 文件名称及其操作 在这段代码之后,可以调用TParse的getter函数, 确定该文件规范的不同组成部分。例如, filespec.Drive()包含字符串“C:”, fileSpec.Path()包含“\Documents\Oandx\” 。 Set()函数使用3个文本参数,从上面代码已经看到, 第一个参数是TDesC引用,包含要解析的文件规范。第二 个和第三个参数是指向其他两个TDesC描述符的指针,其 中一项或两项可以是NULL。第二个参数(相关的文件规范) 如果存在,它指向的文件规范用于提供第一个文什规范 中缺少的组成部分。如果使用了第三个参数,它应该指 向默认文件规范,从中获取第一个和第二个参数未提供 的组成部分。路径、文件名或扩展名可以包含通配符“?” 或“*”,分别表示任意单个字符或任意字符序列
文件名称及其操作 TParse拥有TFileName的实例,TFileName是一个 TBuf。这是一个庞大对象,如果可能,应该避免它 的使用。尽可能创建包含文件规范的自定义更小缓冲, 并使用TParsePtr(引用可修改缓冲)或TParsePtrC(引用 常量缓冲)
9 文件名称及其操作 TParse拥有TFileName的实例,TFileName是一个 TBuf。这是一个庞大对象,如果可能,应该避免它 的使用。尽可能创建包含文件规范的自定义更小缓冲, 并使用TParsePtr(引用可修改缓冲)或TParsePtrC(引用 常量缓冲)
文件服务器会话 Symbian0S文件服务器提供使用户程序能够操作驱 动器、目录和文件以及在文件中读写数据的基本服务。 与全部服务器一样,文件服务器使用墓于会话的通 信,将客户端操作转换为发送给服务器的消息。请求的 函数在服务器中执行,然后将结果传回客户端。因此, 为了使用文件服务器,首先需要己连接的文件服务器会 话,它由RFs类的实例表示。 使用文件服务器的通用模式如下(忽略错误处理): RFs session; session. Connect(); session. Close(;
10 文件服务器会话 Symbian OS文件服务器提供使用户程序能够操作驱 动器、目录和文件以及在文件中读写数据的基本服务。 与全部服务器一样,文件服务器使用墓于会话的通 信,将客户端操作转换为发送给服务器的消息。请求的 函数在服务器中执行,然后将结果传回客户端。因此, 为了使用文件服务器,首先需要已连接的文件服务器会 话,它由RFs类的实例表示。 使用文件服务器的通用模式如下(忽略错误处理): RFs session; session. Connect(); … session. Close();