WEB开发网
开发学院手机开发Symbian 开发 Symbian 全盘扫描的实现方法 阅读

Symbian 全盘扫描的实现方法

 2010-02-26 15:57:00 来源:WEB开发网   
核心提示:void CsoftmgrAllSisView::ScanMC(){RFs &fs = CEikonEnv::Static()->FsSession();CDir *dir = NULL;TPath path;RPointerArray *dirList = new (ELeave) RPointerArray

void CsoftmgrAllSisView::ScanMC()

{

RFs &fs = CEikonEnv::Static()->FsSession();

CDir *dir = NULL;

TPath path;

RPointerArray *dirList = new (ELeave) RPointerArray (5);

RArray pathList(5);

_LIT(KE , "E:") ;

_LIT(Kgg , "\") ;

path = KE;

path.Append(Kgg);

pathList.AppendL(path); //把路径添加到数组中

TInt err = fs.GetDir(path, KEntryAttMaskSupported, ESortNone, dir);

dirList->Append(dir);

TInt count = 0 ;

TInt itemCount = 0 ; //item的数目用来标记每一个item是在itemlist的第几个位置

if (err == KErrNone)

{

while (dirList->Count() != 0)

{

count = (*dirList)[0]->Count() ;

for(TInt i = 0 ; i < count ; ++i)

{

path.Zero() ;

const TEntry &entry = (*((*dirList)[0]))[i];

{ //构造path

path.Append(pathList[0]) ;

path.Append(entry.iName) ;

path.Append(Kgg) ;

}

TInt err = fs.GetDir(path , KEntryAttMaskSupported , ESortNone , dir) ;

if(err == KErrNone)

{

dirList->Append(dir) ;

pathList.Append(path) ;

}

else if(!entry.IsDir() && entry.iName.Right(5).CompareF(KSisFormat()) == 0) //sisx

{

CSisItem::FormatPath(path) ; //格式化path

CSisItem *sisItem = CSisItem::NewL(path,

entry.iName, itemCount++,

ESisItemNotSelected, ENull);

theAppUi->iEngine->Append(*sisItem);

}

}

dirList->Remove(0) ;

pathList.Remove(0) ;

}

}

}

文件目录可以看成一颗不规则的数

我们定义两个数组,一个装载着节点,一个装节点路径

没次循环一层删除第一个节点,(比如我现在在扫描根目录,扫描完根目录后会把根目录的dir从dirList中删除)同时为了构造path也要为path建立一个数组和dirList中的dir一一对应。

Tags:Symbian 扫描 实现

编辑录入:coldstar [复制链接] [打 印]
赞助商链接