如何遍历我的电脑?

play100 2007-08-10 04:52:06
我想搜索出'我的电脑'下的A.C.D.E...等目录?
...全文
236 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
hoya5121 2007-08-13
  • 打赏
  • 举报
回复
CDE是什么?
play100 2007-08-11
  • 打赏
  • 举报
回复
谢谢分享 试下先...
再问句、对于CDE...、没有类似CFileFind的方法来检索吗
hoya5121 2007-08-10
  • 打赏
  • 举报
回复
//遍历磁盘的类
#include "StdAfx.h"
#include ".\getfileorfolder.h"

CGetFileOrFolder::CGetFileOrFolder(void)
{
}

CGetFileOrFolder::~CGetFileOrFolder(void)
{
}
void CGetFileOrFolder::get_all_disk()
{
CString str;
char buf[26*4+1];
DWORD n = GetLogicalDriveStrings(100,buf);
for(int i = 0; i < (int)n; i+=4)
{
str.Format("%c%c",buf[i],buf[i+1]);
this->m_strDisk.Add(str);
}
}
int CGetFileOrFolder::get_disk_count()
{
if(this->m_strDisk.GetSize()<=0)
this->get_all_disk();
return this->m_strDisk.GetSize();
}
CString CGetFileOrFolder::get_one_disk(int nIndex)
{
int n = this->get_disk_count();
if(nIndex >= n)
return _T("");
return this->m_strDisk[nIndex];
}
//参数path必须以 \\ 结束
//找到指定 目录的文件夹,文件,将他们信息存入,map中
bool CGetFileOrFolder::search_folder_file(CString path)
{
if(path == _T(""))
return true;

CFileFind mysearch;
int n_eof=mysearch.FindFile((LPCTSTR)(path+"*.*"));
this->m_strFile.RemoveAll();
this->m_strFolder.RemoveAll();

while(n_eof) {
n_eof = mysearch.FindNextFile();
// not a directory
if(!mysearch.IsDirectory()) {
this->m_strFile.Add(mysearch.GetFileName());
}//if(!mysearch.IsDirectory())
else
{
CString name=mysearch.GetFileTitle();
if(!mysearch.IsDots())
{
this->m_strFolder.Add(mysearch.GetFileName());
}
}//else if(!mysearch.IsDirectory())
}//while(!n_eof)

mysearch.Close();
return true;
}
int CGetFileOrFolder::get_folder_count()
{
return this->m_strFolder.GetSize();
}
CString CGetFileOrFolder::get_one_folder(int nIndex)
{
int n = this->get_folder_count();
if(nIndex >= n)
return _T("");
return this->m_strFolder[nIndex];
}
int CGetFileOrFolder::get_file_count()
{
return (int)this->m_strFile.GetSize();
}
CString CGetFileOrFolder::get_one_file(int nIndex)
{
int n = this->get_file_count();
if(nIndex >= n)
return _T("");
return this->m_strFile[nIndex];
}
hoya5121 2007-08-10
  • 打赏
  • 举报
回复
#pragma once

//封装一个对磁盘,文件夹,文件进行遍历的类
class CGetFileOrFolder
{
protected:
//记录磁盘的串
CStringArray m_strDisk;
//记录文件夹的串
CStringArray m_strFolder;
//记录文件的串
CStringArray m_strFile;
private:
void get_all_disk();
public:
//磁盘的枚举
int get_disk_count();
CString get_one_disk(int nIndex);
//文件夹的枚举
bool search_folder_file(CString path);
int get_folder_count();
CString get_one_folder(int nIndex);
//文件的枚举
int get_file_count();
CString get_one_file(int nIndex);
public:
CGetFileOrFolder(void);
~CGetFileOrFolder(void);
};
//使用方法
//磁盘:
/*
CGetFileOrFolder g;
int n = g.get_disk_count();
for(int i = 0; i < n; i++)
AfxMessageBox(g.get_one_disk(i));
*/
//文件(文件夹)
/*
CGetFileOrFolder g;
g.search_folder_file(g.get_one_disk(1));
for(int i = 0; i < g.get_file_count(); i++)
AfxMessageBox(g.get_one_file(i));
*/

64,649

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧