分享一位大神的Symbian全盘扫描

void CsoftmgrAllSisView::ScanMC()
{
RFs &fs = CEikonEnv::Static()->FsSession();
CDir *dir = NULL;
TPath path;
RPointerArray<CDir> *dirList = new (ELeave) RPointerArray<CDir> (5);
RArray<TPath> 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一一对应。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值