Symbian OS 文件服务器(四)

来源:互联网 发布:百度闪电算法 编辑:程序博客网 时间:2024/05/18 05:40

目录项

RDir

概述

   读取目录下的目录项。在读取目录项前,必须使用目录项属性过滤参数打开目录项所在的目录,然后才能使用Read()函数读取属性过滤后的目录项。操作完成后,应该使用Close()函数关闭打开的目录。

   有两种版本的Read()方法:一种是每次只读取一个目录项,要求遍历所有目录项。另一种使用一个TEntryArray类型,可以一次读取多个目录项。为了让应用程序逻辑简单,这种类型和服务器的交互少,并且非常高效。

   每种版本的Read()方法都能工作在同步或异步模式。

   通常,RFs::GetDir()要不RDir::Read()更为便利。RFs::GetDir()可以允许目录项以不同的方式进行排序。然而,它却不区分同步或异步模式,并且不允许逐个读取目录项。

 

RDirAPI

   1、Open()、Close()

    IMPORT_CTInt Open(RFs &aFs, const TDesC&aMatchName, TUint anAttMask);

    打开一个使用了属性掩码过滤后的目录。在使用任何版本的Read()函数前,必须先调用该函数。

    IMPORT_Cvoid Close();

    关闭打开的目录项。

 

   2、Read()

   IMPORT_C TIntRead(TEntryArray &anArray)const;

   读取过滤后所有的目录项到指定的目录项数组中。这是一个同步函数,操作完成后才返回。

   IMPORT_C voidRead(TEntryArray &anArray, TRequestStatus&aStatus) const;

   读取过滤后所有的目录项到指定的目录项数组中。这是一个异步函数。

   IMPORT_C TIntRead(TEntry &anEntry) const;

   一次读取过滤后的一个目录项。这是一个同步函数。

   IMPORT_C voidRead(TPckg&anEntry,TRequestStatus&aStatus)const;

   一次读取过滤后的一个目录项。这是一个异步函数。

 

CDir

概述

   已经从文件系统中读取到内存的目录项数组。用户程序可以读取和排序目录项数组,但不能创建。

 

CDirAPI

   1、RFs::GetDir()

   获得目录项数组的CDir指针。由于用户不能创建CDir对象,所以CDir没有公开的构造函数。

 

   2、Count()、operator[]()、Sort()

   IMPORT_C TInt Count()const;

   获得目录项数组的长度。

   IMPORT_C const TEntry&operator[](TInt anIndex)const;

   通过数组下标获得指定的一个目录项。

   IMPORT_C TInt Sort(TUintaEntrySortKey);

   排序目录项。

 

TEntry

概述

   包装了一个目录项,它可以是目录、文件或卷标。每个目录项都用一个与它所属的目录和类型相关的名称,类型通过一个唯一的UID指定。

   TEntry包装了目录以下信息:

   1、目录项的类型:iType

   2、目录项的属性:iAtt

   3、目录项的大小

   4、目录项的最后修改时间

 

TEntry API

   1、TEntry()

   IMPORT_CTEntry();

   默认构造函数。

   IMPORT_C TEntry(constTEntry &aEntry);

   拷贝构造函数。

   2、operator=()、operator[]()

   IMPORT_C TEntry&operator=(const TEntry&aEntry);

   赋值操作符。

   inline const TUid&operator[](TInt anIndex) const;

   获得文件3个UID中的1个。

   3、IsReadOnly()、IsHidden()、IsSystem()、IsArchive()、IsDir()

   IMPORT_C TBoolIsReadOnly() const;

   判断文件或目录属性是否为只读。

   IMPORT_C TBoolIsHidden() const;

   判断文件或目录属性是否为隐藏。

   IMPORT_C TBoolIsSystem() const;

   判断文件或目录属性是否为系统。

   IMPORT_C TBoolIsArchive() const;

   判断文件属性是否为只读。

   IMPORT_C TBool IsDir()const;

   判断目录项是否为目录。

   4、iAtt、iSize、iModified、iType、iName

   TUintiAtt;

   目录项属性,每一个二进制位描述了一个属性。

   TIntiSize;

   目录项大小。

   TTimeiModified;

   目录项最后修改时间

   TUidTypeiType;

   文件UID类型

   TBufC<KMaxFileName > iName;

   目录项名称。


原创粉丝点击