4586|9

71

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

遍历文件夹 [复制链接]

遍历某一文件夹下面的所有文件及其子文件夹,并生成目录树,该怎么做?
看到说要用 FindFirstFile, FindNextFile, FindClose.
但是不会用啊, 请大家帮忙指点一下·····

最新回复

这种东西其实baidu一下就出来了  详情 回复 发表于 2009-3-20 16:24
点赞 关注

回复
举报

77

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
ListDir()
{
FindFirstFile
while ()
{
  // 如果是目录的话,., .. 除外,调用ListDir();、
  // 如果不是就是文件了
  
  FindNextFile
}
FindClose
}
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
ultrapro 大哥 ,
能不能说详细点。  . 或者 .. 代表什么?
能不能遍历某一特定格式的文件?
比如遍历某个文件夹下 .txt 格式的文件````
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

4
 
1. .是当前目录 .. 是上一级目录
2. lpFileName 就是你 找的,看看MSDN说明
HANDLE FindFirstFile(
  LPCTSTR lpFileName,
  LPWIN32_FIND_DATA lpFindFileData
);
FindFirstFile(L"*.txt");
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

5
 
引用 3 楼 ultrapro 的回复:
1. .是当前目录 .. 是上一级目录
2. lpFileName 就是你 找的,看看MSDN说明
HANDLE FindFirstFile(
  LPCTSTR lpFileName,
  LPWIN32_FIND_DATA lpFindFileData
);
FindFirstFile(L"*.txt");


这样就不会列出其他目录了,只有文件了。

 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

6
 
我有点地方不理解
如果把文件夹 1 中的子文件夹 1_1 中的文件遍历完了之后,
此时它会自动回到文件夹 1 中去遍历其它的文件夹(比如1_2, 1_3)吗?
如果是的话,怎么判断它把文件夹 1_1 中的文件遍历完了?
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

7
 
上面的循环只能列出一个目录下的文件和目录,对于目录递归处理吧,我认为我已经说的很明白了
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

8
 
生成目录树?不知道怎么弄
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

9
 
干点苦力攒点分

BOOL CopyFolderFiles(TCHAR *szSrcFolder, TCHAR *szDestFolder)  
{
        WIN32_FIND_DATA fd;
        HANDLE hFind;
        TCHAR src[128];
        TCHAR str1[128];
        TCHAR str2[128];

        _stprintf(src, TEXT("%s\\*.*"), szSrcFolder);
        hFind=FindFirstFile(src,&fd); //寻找第一个文件
        if(hFind!=INVALID_HANDLE_VALUE)
        {
                do{
                        _stprintf(str1, TEXT("%s\\%s"), szDestFolder, fd.cFileName);
                        _stprintf(str2, TEXT("%s\\%s"), szSrcFolder, fd.cFileName);                       
                        if(fd.dwFileAttributes==FILE_ATTRIBUTE_DIRECTORY) //判断是否文件夹
                        {   
                //目标文件夹不存在,创建新子文件夹。
                if (FindFirstFile(str1,&fd) == INVALID_HANDLE_VALUE)
                {
                                    CreateDirectory(str1,NULL);
                }
                                CopyFolderFiles(str2, str1); //采用递归查找子文件下的文件
                        }
                        else
                        {     
                                CopyFile(str2, str1, true);           //If already exist, skip copy the file   
                        }
       
                }while(FindNextFile(hFind,&fd)); //查找是否存在下一个文件
        }
        else
        {
           //源文件夹为空,返回
           return FALSE;
        }
       
        return TRUE;
}
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

10
 
这种东西其实baidu一下就出来了
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表