欢迎访问:常州市武进区嘉泽中心小学网站 !今天是:
栏目列表
您现在的位置是:首页>>教师>>计算机技术>>程序设计>>杂项>>文章内容
在C++Builder中实现遍历并载入指定目录
发布时间:2008-11-20   点击:   来源:本站原创   录入者:佚名
 


主页:http://{域名已经过期}
邮件:maxchou@{域名已经过期}


  在我们编写应用程序时,有时会遇到有关目录的遍历的问题,在这里介绍我在开发WML微浏览器的收藏夹功能时有关扁历目录的程序原理与代码。

在这个程序中主要使用了一个以下的控件与WinAPI函数:
  TTreeView组件
  FindFirst()
  FindNext()
  FindClose()
  GetFileAttributes()

把遍历目录及生成树形结点的过程封装成以下函数:
  void __fastcall TForm1::CreateFavoriteTree(AnsiString SourcePath, TTreeNode *node);

  参数:
  SourcePath: 指定需要遍历的目录,如“C:\\MyFolder\\”
  node: 把生成的树形结点装到TTreeView的哪个结点下

函数体:
TSearchRec sr;

int iAttributes = 0;

DWORD ResultAttr;

AnsiString FoundFileName;



iAttributes |= faAnyFile;



try

{

	TTreeNode *pNode;



	if (FindFirst(SourcePath + "*.*", iAttributes, sr) == 0)

	{

		do //开始查找文件

		{

			FoundFileName = SourcePath + sr.Name; //生成找到的文件路径

			ResultAttr = GetFileAttributes(LPCTSTR(FoundFileName.c_str())); //返回文件属性



			// 创建目录结点

			if (ResultAttr == FILE_ATTRIBUTE_DIRECTORY)  //找到的文件是目录类型

			{

				if (sr.Name.Pos(".") == 0) //过滤掉创建目录是的默认子目录 "." 和 ".."

				{

					pNode = tvFav->Items->AddChild(node, sr.Name);

					pNode->ImageIndex		= 0;

					pNode->SelectedIndex	= 0;

					CreateFavoriteTree(SourcePath + sr.Name + "\\", pNode);

				}

			} //end if(sr.Name.Pos...



			// 创建文件结点

			if(ResultAttr != FILE_ATTRIBUTE_DIRECTORY)

			{

				if (ExtractFileExt(sr.Name) == ".wurl")

				{

					pNode = tvFav->Items->AddChild(node

						sr.Name.SubString(0, sr.Name.Length() -

						ExtractFileExt(sr.Name).Length()));

					pNode->ImageIndex		= 1;

					pNode->SelectedIndex	= 1;

				}

			}

		} while (FindNext(sr) == 0);

		FindClose(sr); //关闭

	}

}

catch(...)

{

	MessageBox(this->Handle, "读取文件夹失败!", "错误", MB_OK|MB_ICONERROR);

	return false;

}

return true;


调用方法:
void __fastcall TfrmManageFav::FormActivate(TObject *Sender)

{

	tvFav->Items->Clear();

	TTreeNode *pNode = tvFav->Items->Add(NULL, "Favorite");

	CreateFavoriteTree(ExtractFilePath(Application->ExeName) + "Favorite\\", pNode);

	tvFav->FullExpand();

}

  这样就可以加载应用程序目录下的子目录“Favorite”下的目录结构到TTrewView控件中,通过修改上面代码就很容易实现你特定的需求。

附件:
    关闭窗口
    打印文档
    账号登录
    保持登录 忘记密码?
    账号与武进教师培训平台同步