请问,有什么函数或者控件可以逐一读出一个目录下的所有文件名?谢谢!

soarhigh 2003-11-05 10:21:59
请问,有什么函数或者控件可以逐一读出一个目录下的所有文件名?谢谢!
...全文
48 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qdcnc168 2003-11-05
  • 打赏
  • 举报
回复
int Cselectfile::GetDetailFilePath(CString csFilePath)
{
WIN32_FIND_DATA fd;
HANDLE m_handle;
CString csFileName;
//int dbfflag;
csFileName=csFilePath+"\\*.*";
//csFilePath+="/";
m_handle=::FindFirstFile(csFileName,&fd);
while(1)
{
if ((strcmp(fd.cFileName,".")==0 )||(strcmp(fd.cFileName,"..")==0))
{
if(!::FindNextFile(m_handle,&fd))
break;
continue;
}
else if(fd.dwFileAttributes==FILE_ATTRIBUTE_DIRECTORY)
{
GetDetailFilePath(csFilePath+"\\"+fd.cFileName);
if(!::FindNextFile(m_handle,&fd))
break;
continue;
}
else
{
//tempstr=fd.cFileName;
//dbfflag=tempstr.Find(".dbf");
//if(dbfflag>0)
//{
csProFileName[FileCount]=csFilePath+"\\"+fd.cFileName;
FileCount++;
//}
if(!::FindNextFile(m_handle,&fd))
break;
continue;
}

}
return 1;

}
0sch 2003-11-05
  • 打赏
  • 举报
回复
HANDLE hFind;
WIN32_FIND_DATA dataFind;
BOOL bMoreFiles=TRUE;
CString strFile;

hFind=FindFirstFile(m_strMainDir+"\\*.*",&dataFind);

while(hFind!=INVALID_HANDLE_VALUE && bMoreFiles ==TRUE)
{
if(dataFind.dwFileAttributes ==FILE_ATTRIBUTE_ARCHIVE)
{
int nChar =dataFind.cFileName[0];
if(islower(nChar))
nChar-=32;
if(isalpha(nChar))
nChar-='A';
else
nChar=26;
m_treeFiles.InsertItem(dataFind.cFileName,hLetter[nChar];//在树中插入文件名
}
bMoreFiles=FindNextFile(hFind,&dataFind);
}
FindClose(hFind);
koala_wk 2003-11-05
  • 打赏
  • 举报
回复
删除目录及目录下所有文件与子目录
(Hermess发表于2002-5-24 22:10:27)
  VC++只提供了删除一个空目录的函数,而在实际应用中往往希望删除其下有很多子目录与文件的目录。为了实现这一功能,我编写了DeleteDirectory
函数,它可以实现这一功能。

函数原型:BOOL DeleteDirectory(char *DirName);
返回值:成功删除时返回TRUE,否则返回FALSE
参数DirName为要删除的目录名,必须为绝对路径名,如“c:\\temp"。

函数定义如下:
BOOL DeleteDirectory(char *DirName)
{
CFileFind tempFind;
char tempFileFind[200];
sprintf(tempFileFind,"%s\\*.*",DirName);
BOOL IsFinded=(BOOL)tempFind.FindFile(tempFileFind);
while(IsFinded)
{
IsFinded=(BOOL)tempFind.FindNextFile();
if(!tempFind.IsDots())
{
char foundFileName[200];
strcpy(foundFileName,tempFind.GetFileName().GetBuffer(200));
if(tempFind.IsDirectory())
{
char tempDir[200];
sprintf(tempDir,"%s\\%s",DirName,foundFileName);
DeleteDirectory(tempDir);
}
else
{
char tempFileName[200];
sprintf(tempFileName,"%s\\%s",DirName,foundFileName);
DeleteFile(tempFileName);
}
}
}
tempFind.Close();
if(!RemovwDirctory(DirName))
{
MessageBox(0,"删除目录失败!","警告信息",MK_OK);
return FALSE;
}
return TRUE;
}
spwnihao 2003-11-05
  • 打赏
  • 举报
回复
void CMyComDlg::OnButton1()
{
// TODO: Add your control notification handler code here
AddList("C:\\myDir");

}
void CMyComDlg::AddList(char* DirName)
{
CFileFind tempFind;
char tempFileFind[200];
sprintf(tempFileFind,"%s\\*.*",DirName);
BOOL IsFinded=(BOOL)tempFind.FindFile(tempFileFind);
while(IsFinded)
{
IsFinded=(BOOL)tempFind.FindNextFile();
if(!tempFind.IsDots())
{
char foundFileName[200];
strcpy(foundFileName,tempFind.GetFileName().GetBuffer(200));

//还有子目录,子目录下的所有文件加入list
if(tempFind.IsDirectory())
{
char tempDir[200];
sprintf(tempDir,"%s\\%s",DirName,foundFileName);
AddList(tempDir);
}
else
{
CString StrAdd;
CString strFileName=tempFind.GetFileName();
//去掉扩展名
int EXTNameBegin = strFileName.Find('.');
if(EXTNameBegin==-1)
{
StrAdd=strFileName;
}
else
{
StrAdd=strFileName.Mid(0,EXTNameBegin);
}

//文件加入列表
m_Comb.AddString(StrAdd);
}

}
}
tempFind.Close();
}

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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