2010-03-25 16:59

一、先介绍一个结构WIN32_FIND_DATA

typedef struct _WIN32_FIND_DATA

{

  DWORD dwFileAttributes; //文件属性

  FILETIME ftCreationTime; // 文件创建时间

  FILETIME ftLastAccessTime; // 文件最后一次访问时间

  FILETIME ftLastWriteTime; // 文件最后一次修改时间

  DWORD nFileSizeHigh; // 文件长度高32位

  DWORD nFileSizeLow; // 文件长度低32位

  DWORD dwReserved0; // 系统保留

  DWORD dwReserved1; // 系统保留

  TCHAR cFileName[ MAX_PATH ]; // 长文件名

  TCHAR cAlternateFileName[ 14 ]; // 文件的可选名

 } WIN32_FIND_DATA;

可以通过FindFirstFile()函数,根据文件路径把待操作文件的相关属性读取到WIN32_FIND_DATA结构中去:

WIN32_FIND_DATA ffd;

HANDLE hFind = FindFirstFile("c://test.dat",&ffd);

二、函数FindFirstFile

1、声明:HANDLE FindFirstFile(LPCTSTR lpFileName,LPWIN32_FIND_DATA lpFindFileData);

2、参数:

lpFileName String,欲搜索的文件名。可包含通配符,并可包含一个路径或相对路径名

lpFindFileData WIN32_FIND_DATA,一个WIN32_FIND_DATA指针,用于装载与找到的文件有关的信息,该结构可用于后续的搜索

3、返回值:

如执行成功,返回一个搜索句柄。如果出错,返回一个INVALID_HANDLE_VALUE常数,一旦不再需要,应该用FindClose函数关闭这个句柄

4、功能

读取文件信息到一个WIN32_FIND_DATA结构中,返回这个文件的句柄

5、注释:

由这个函数返回的句柄可以作为一个参数用于FindNextFile函数。这样一来,就可以方便的枚举出与lpFileName参数指定的文件名相符的所有文件(是指文件名含有通配符)

三、函数FindNextFile

1、声明BOOL FindNextFile(HANDLE hFindFile, LPWIN32_FIND_DATA lpFindFileData);

2、参数:

HANDLE hFindFile搜索的文件句柄,函数执行的时候搜索的是此句柄的下一文件

LPWIN32_FIND_DATA lpFindFileData一个WIN32_FIND_DATA指针,

3、返回值:

如果调用成功返回一个非0值;调用失败,返回为0,可调用GetLastError来获取错误信息

4、功能

继续查找FindFirstFile函数搜索后的文件

5、注释:

这个函数可以连续调用,以方便的枚举出与lpFileName参数指定的文件名相符的所有文件

四、下面是遍历代码

#include<windows.h>
#include<iostream>
#include<string>
using namespace std;

//只能处理目录:lpPath只能是路径

find(char * lpPath)
{
  char szFind[MAX_PATH];
  WIN32_FIND_DATA FindFileData;
  strcpy(szFind,lpPath);
  strcat(szFind,"*.*");
  HANDLE hFind=::FindFirstFile(szFind,&FindFileData);
  if(INVALID_HANDLE_VALUE == hFind)  return;
  while(TRUE)
  {
if(FindFileData.dwFileAttributes

&FILE_ATTRIBUTE_DIRECTORY)
    {
      if(FindFileData.cFileName[0]!='.')
      {
        strcpy(szFile,lpPath);
        strcat(szFile,"");
        strcat(szFile,FindFileData.cFileName);
        find(szFile);
      }
    }
    else
    {
      cout << FindFileData.cFileName;
    }
    if(!FindNextFile(hFind,&FindFileData))  break;
  }
  FindClose(hFind);
}

VC遍历文件夹下所有文件和文件夹相关推荐

  1. windows中遍历指定文件夹下的所有子文件夹

    前面我给出了windows下面指定文件夹下面指定类型文件的遍历程序,这里,再给出遍历指定文件夹下的所有子文件夹的程序: #include "stdafx.h" #include & ...

  2. shell脚本:遍历指定文件夹下.jar后缀的文件,并备份到目标文件夹

    shell脚本:遍历指定文件夹下.jar后缀的文件,并备份到目标文件夹 批量备份源文件夹下的所有jar包 并用原名+日期时间重命名 过程如下: 创建一个sh文件: vim test.sh 按 i 进入 ...

  3. python 导入csv文件到oracle_python将文件夹下的所有csv文件存入mysql和oracle数据库

    #oracle版 首先新建python脚本(d:/python/orclImport.py) import os #引入os包 if __name__ == '__main__': #遍历文件夹下所有 ...

  4. java实现zip压缩文件(同一文件夹下的多个文件夹打成一个zip包)

    这2个工具类都推荐使用统一个场景的不通过写法 推荐第一种 package com.gblfy.test;import java.io.BufferedInputStream; import java. ...

  5. Python语言学习:创建/删除文件/文件夹、获取当前文件/文件夹路径(系统环境路径/目录)、获取当前文件夹下的所有子文件路径等代码(os系列用法)实现之详细攻略

    Python语言学习:创建/删除文件/文件夹.获取当前文件/文件夹路径(系统环境路径/目录).获取当前文件夹下的所有子文件路径等代码(os系列用法)实现之详细攻略 目录 系统环境路径的设置 1.sys ...

  6. android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件

    简介 XStream 是一个开源项目,一套简单实用的类库,用于序列化对象与 XML 对象之间的相互转换. 将 XML 文件内容解析为一个对象或将一个对象序列化为 XML 文件. 1.下载工具 xstr ...

  7. android 7 创建文件夹,Android 在 res/layout 文件夹 下创建一个 子文件夹实例

    Android 资源文件夹 Layout 文件夹 Layout 文件是存放Android的布局文件的资源文件夹,但是如果你想要在里面创建子文件夹,你会发现xml文件报错. 如何在Layout文件夹下方 ...

  8. [Windowns C]递归遍历指定目录下的子目录和文件

    /* 功能:演示了利用C语言递归遍历指定目录下的子目录和文件! 说明:经修改也可以搜索文件名符合特定格式的文件,如修改"\\*.*"为"\\*.log" */ ...

  9. 使用某个文件夹下的所有文件去替换另一个文件夹下及其子文件夹下存在的同名文件(Python实现)...

    值此新年即将到来之际,在这献上今年最后一篇文章. 产生这个需求是在项目的一次图标替换上,当时给了我一堆新图标要替换原来的老图标,可是原来的老图标分布在某个文件夹下的各个子文件夹下面,而新图标全是在同一 ...

  10. MapReduce会自动忽略文件夹下的.开头的文件

    MapReduce会自动忽略文件夹下的.开头的文件,跳过这些文件的处理. 转载于:https://www.cnblogs.com/mediocreWorld/p/11104500.html

最新文章

  1. 【原创】Aspose.Words组件介绍及使用—基本介绍与DOM概述
  2. 【Linux 内核】调度器 ② ( sched_class 调度类结构体源码 | 源码路径 linux-5.6.18\kernel\sched\sched.h )
  3. Cookie获取用户的访问记录
  4. Python:列表、集合等交集、并集、差集、非集简介及其代码实现之详细攻略
  5. java切换系统输入法_java - 关于Android输入法切换的问题
  6. MVC3.0 Razor实现Ajax数据分页
  7. sql server 2008学习6 更复杂的查询
  8. 安卓Selector
  9. linux安装nord,卸载nord源
  10. c++ 模糊搜索 正则表达式_c++使用正则表达式提取关键字的方法
  11. c语言中ai是什么,科普 | 什么是 cDai?
  12. python基础6-函数的参数
  13. 通过Spannable对象设置textview的样式
  14. plt绘制xy轴起始刻度
  15. 推荐 一个PDF转Word内容不匹配、乱码的解决方法
  16. JS根据城市名称获取所在省份
  17. 毕设第十周工作报告和第十一周安排
  18. html 脚本错误,脚本错误怎么解决,教您脚本错误怎么解决?
  19. 【正点原子Linux连载】第三章 初识Qt摘自【正点原子】I.MX6U嵌入式Qt开发指南V1.0.2
  20. 杜兰大学计算机专业,杜兰大学计算机科学专业详解.docx

热门文章

  1. USB Type-C PD快充简介
  2. 简述dijkstra算法原理_理解最短路径——迪杰斯特拉(dijkstra)算法
  3. MindManager思维导图软件中如何下载使用行业分析模板教程分享
  4. 有哪些营销书籍值得推荐?市场营销人员必读书单
  5. PHP操作redis详细讲解(转)
  6. 适用于主流浏览器导出Excel表格的代码
  7. JS 将Table数据导出到Excel表
  8. 加人微信被忽略?你可能犯了这些错误!
  9. Linux命令行下设置黑底绿字
  10. html隐藏域保存数组,关于给JS组合数组赋值给隐藏域问题