Symbian 文件扫描和查找文件

 

 

文件夹的扫描和查找是我们经常要用到的技巧.
可能有的朋友会用得着.当然自己以后也会用的着.
在这里做一个备忘.让我们看是如何实现的吧.


void CStartScan(RFs& aFs,const TDesC& aFileName,const TDesC& aPath)
    {
    CDirScan* DirScan = CDirScan::NewL(aFs);//初始化扫描文件句柄
    DirScan->SetScanDataL(aPath, KEntryAttMatchMask|KEntryAttMatchExclusive,
            ESortByName, CDirScan::EScanDownTree);
    //设置扫描的次序,以及扫描的路径还有选择扫描的属性
    while(1)
        {
            CDir* dir = NULL;
            TRAPD(error, DirScan->NextL(dir));//取文件夹
            if (error || !dir) break;  
            GetFile(aFs,aFileName,DirScan->FullPath());
            //在指定的文件夹中查找指定的文件.也可以模糊皮配
            delete dir;
            dir = NULL;       
        }
   
    if(DirScan)
        {
        delete DirScan;
        DirScan = NULL;
        }
    }

//在指定的文件夹中查找文件
//以下函数里查是指定目录下的图片
void GetFile(RFs& aFs,const TDesC& aFileName,const TDesC& aPath)
    {
    CDir* file_list;
    TFindFile aFindFile(aFs);
    TInt err = aFindFile.FindWildByDir(aFileName, aPath,file_list);
    //这个用法挺用趣,Symbian专用哦
    while (err==KErrNone)
        {
        for (TInt i=0; i<file_list->Count(); i++)
            {
                TEntry aEntry = (*file_list)[i];
                TBuf<64> bufName;
                bufName.Copy(aEntry.iName);
                TInt err = bufName.FindF(_L(".jpg"));//查找JPG
                if(err == KErrNotFound)
                    {
                    break;
                    }
                else
                    {
                    err = bufName.FindF(_L(".png"));//PNG图片
                    if(err == KErrNotFound)
                        {
                        break;
                        }
                    else
                        {
                        err = bufName.FindF(_L(".gif"));//GIF图片
                        if(err == KErrNotFound)
                            {
                            break;
                            }
                        }
                    }//end else
                  
                TBuf<128>pathName;
                pathName.Copy(aPath);
                pathName.Append(aEntry.iName);
                CEntry* eEntry = new (ELeave)CEntry();
                eEntry->SetFileName(bufName);
                eEntry->SetFilePath(pathName);
                iAllPicture.Append(eEntry);
                //保存取得的文件属性,比如文件名路径
            }//end for

        delete file_list;
        file_list = NULL;
        err = aFindFile.FindWild(file_list);
        }

    if (file_list)
        {
        delete file_list;
        file_list = NULL;
        }  
    }

以上代码在N95,N73测试通过

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值