如何获得指定文件夹下的所有文件名?

wyjun1985 2009-06-24 04:59:31
RT!
...全文
177 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ghost90 2009-06-25
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 wyjun1985 的回复:]
那怎么获得文件夹的名字呢?
[/Quote]

if(!FileFind.IsDots() )
{
FileName+=" ";
str+=FileName;
}
去掉 FileFind.IsDirectory()
WooSir 2009-06-24
  • 打赏
  • 举报
回复
试试我写的这个递归函数
void FindAllFilesInPath(LPCTSTR strPath)
{
HANDLE hFile;
WIN32_FIND_DATA fndInfo;
char strPathName[MAX_PATH];
memset(strPathName, 0, MAX_PATH);
sprintf(strPathName, "%s\\*.*", strPath);
hFile = ::FindFirstFile(strPathName, &fndInfo);
do
{
if(hFile==INVALID_HANDLE_VALUE)
return;
else
{
if(fndInfo.cFileName[0]=='.')
continue;
char strNewName[MAX_PATH];
memset(strNewName, 0, MAX_PATH);
sprintf(strNewName, "%s\\%s", strPath, fndInfo.cFileName);
//如果是子目录,则递归搜索
if(fndInfo.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY)
FindAllFilesInPath(strNewName);
else//如果是文件
{
自己处理
}
}
}
while( ::FindNextFile(hFile, &fndInfo) );
::FindClose(hFile);
}
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 softist 的回复:]
遍历文件目录
http://www.softist.com/programemo/file/travel-dir.htm
[/Quote]

up
wyjun1985 2009-06-24
  • 打赏
  • 举报
回复
那怎么获得文件夹的名字呢?
lcyw 2009-06-24
  • 打赏
  • 举报
回复
楼上都说了

CFileFind 就可以搞定,
Ghost90 2009-06-24
  • 打赏
  • 举报
回复

有点问题 修改下



CFileFind FileFind;
BOOL Ret = FALSE;
CString FileName;
CString str;


::SetCurrentDirectory("D:\\Program\\Test\\");
Ret = FileFind.FindFile(NULL, 0);
while(Ret)
{
Ret = FileFind.FindNextFile();
FileName = FileFind.GetFileName();
if(!FileFind.IsDots() && !FileFind.IsDirectory())
{
FileName+=" ";
str+=FileName;
}

}
MessageBox(str);

Ghost90 2009-06-24
  • 打赏
  • 举报
回复


CFileFind FileFind;
BOOL Ret = FALSE;
CString FileName;
CString str;


::SetCurrentDirectory("D:\\Program\\Test\\");
Ret = FileFind.FindFile(NULL, 0);
while(Ret)
{
Ret = FileFind.FindNextFile();
FileName = FileFind.GetFileName();
if(FileName!="." && FileName!="..")
{
FileName+=" ";
str+=FileName;
}

}
MessageBox(str);


fandh 2009-06-24
  • 打赏
  • 举报
回复
http://www.vckbase.com/document/viewdoc/?id=620
快乐鹦鹉 2009-06-24
  • 打赏
  • 举报
回复
遍历所有文件。用CFileFind
fandh 2009-06-24
  • 打赏
  • 举报
回复
http://www.cnblogs.com/yjm0105/archive/2005/06/22/179353.html
codecola 2009-06-24
  • 打赏
  • 举报
回复
可以用:
   WIN32_FIND_DATA wfd;
   HANDLE hFind = FindFirstFile(szFind, &wfd);
   if (hFind != INVALID_HANDLE_VALUE)

也可以用:
CFileFind

具体的查msdn
marrco2005 2009-06-24
  • 打赏
  • 举报
回复
CStringArray strArrayFiles;
CFileFind finder;
BOOL bWorking = finder.FindFile("youpath\\*.*");

while (bWorking)
{
bWorking = finder.FindNextFile();

// skip . and .. files; otherwise, we'd
// recur infinitely!

if (finder.IsDirectory())
{
continue;
}

strArrayFiles.Add( finder.GetFilePath() );
// if it's a directory, recursively search it


}

finder.Close();
zoulie 2009-06-24
  • 打赏
  • 举报
回复
FindFirstFile();
FindNextFile()

16,551

社区成员

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

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

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