symbian 获取指定路径下的文件夹和文件列表

by arthersophy

 

TBool CLaunchCamera::GetLastFile(TFileName & aFilePath)
{
RFs fs;
User::LeaveIfError(fs.Connect());

TInt count(0);

CDirScan* ds = CDirScan::NewLC(fs);
TRAPD(err,ds->SetScanDataL(aFilePath,KEntryAttNormal,ESortByName|EAscending,CDirScan::EScanDownTree));
if (err!=KErrNone)

CleanupStack::PopAndDestroy(ds);
fs.Close();
return EFalse;
}

CDir* c = NULL;
TFileName fullname;
while(1)
{

ds->NextL(c);
if (!c)
break;

for (TInt i=0; i <c->Count(); i++)
{
const TEntry e= (*c)[i];

fullname.Copy(ds->FullPath());
fullname.Append(e.iName);// 全路径:如:c:/data/images/hello.jpg

TParsePtrC p(fullname);

TBufC <KMaxPath> nameShort(p.NameAndExt()); // 文件名,没有路径

TTime timeNow = e.iModified;

if( timeNow > iForeverAllLastTime )
{
iLastNewFilePath.FillZ(KMaxFileName) ;
iLastNewFilePath =fullname ;
iNewFileName = nameShort;
CleanupStack::PopAndDestroy(ds);
fs.Close();
return ETrue; 
}
}
delete c;
c=NULL;
}

CleanupStack::PopAndDestroy(ds);
fs.Close();
return EFalse;

}

 

by   http://blog.sina.com.cn/s/blog_4a774f1e01009b80.html

 

RFs Fs;
User::LeaveIfError(Fs.Connect());
CDir *dir = NULL;

// 获取KPath下的文件和文件夹列表
User::LeaveIfError(Fs.GetDir(KPath,KEntryAttNormal|KEntryAttMatchMask,ESortNone,dir));

for (TInt i=0; i<dir->Count(); i++)
{

  // 如果是文件夹,就将文件夹名称保存到iFolderlist
  if ((*dir)[i].IsDir())
  {
   HBufC* foldername = (*dir)[i].iName.AllocL();
   iFolderlist.AppendL(foldername);
  }

}
delete dir;
dir = NULL;
Fs.Close();

iFolderlist.ResetAndDestroy();

 

注:

第一种方法在执行ds->NextL(c);时非常耗时,本人用N6670手机试过,当KPath下有340个左右的文件和文件夹时,耗时大概是15秒,而用第二种方法不到1秒,所以建议使用第二种方法.

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值