`
testcs_dn
  • 浏览: 113967 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

VC遍历文件夹下所有文件和文件夹

 
阅读更多

一、先介绍一个结构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遍历文件夹下面的文件

    在编程领域,遍历文件夹及其子目录中的所有文件是一项常见的任务,特别是在处理大量数据或进行文件操作时。本文将详细讲解如何使用VC++(Visual C++)来实现这一功能,以及涉及的相关知识点。 首先,我们需要理解...

    VC下遍历文件夹、建成目录树

    VC下遍历文件夹、建成目录树

    VC遍历文件夹与文件

    本文将深入探讨如何使用C++在Visual C++(VC)中实现递归遍历指定文件夹及其子文件夹的所有文件,并构建一个树结构的表示。 首先,我们需要了解Windows API中的几个关键函数,它们是遍历文件系统的核心: 1. **...

    VC遍历文件夹

    ### VC遍历文件夹知识点详解 #### 一、概述 在Windows编程中,遍历文件夹是一项常见的需求,尤其在开发文件管理软件时尤为重要。本文将详细介绍如何在Visual C++ (VC) 中使用Windows API来遍历文件夹,并获取文件夹...

    VC遍历文件夹下的全部文件

    通过这样的方式,你可以实现VC++中遍历文件夹下的所有文件,并根据需要进行过滤和处理。在实际项目中,可能还需要考虑多线程、错误处理等复杂情况,但上述基础方法已经涵盖了基本的文件遍历功能。记得在编写代码时,...

    VC遍历文件夹并建成目录树.visual c++

    这些函数是基于迭代的方式,可以用来获取指定目录下的所有文件和子目录。 1. **`FindFirstFile`**:此函数用于开始一个文件搜索,它接收两个参数,一个是通配符路径(例如,"*.txt" 或者 "C:\\mydir\\*.*"),另一...

    vc 快速检索指定文件,遍历文件夹下所有文件

    在IT领域,尤其是在系统管理和软件开发中,快速检索指定文件并遍历文件夹下的所有文件是一项常见的任务。这个过程涉及到操作系统的基本操作,如文件系统接口的使用,以及可能的编程技术,如脚本语言或API调用。下面...

    MFC读取文件夹并且遍历该文件下面的所有文件

    在MFC(Microsoft Foundation Classes)环境下,开发C++应用程序时,常常需要处理文件系统操作,例如读取文件夹以及遍历其下的所有文件和子文件夹。本篇将详细讲解如何实现这一功能,并提供相关代码示例。 首先,...

    递归遍历文件夹下文件

    功能为读取文件名,如果是文件夹,则继续遍历读取文件夹下面的列表,直到读到文件,则读取文件名

    遍历文件夹中的所有文件

    在编程领域,遍历文件夹中的所有文件是一项基础但至关重要的任务,特别是在处理大量数据或者进行文件操作时。本文将详细讲解如何使用C++语言在Windows环境下遍历磁盘上的每一层文件夹,并且该方法已经在Visual C++ ...

    VC遍历文件夹与文件,树控件展示

    它首先调用`FindFirstFile`,然后在循环中不断调用`FindNextFile`,直到遍历完所有文件和子文件夹。对于每个文件或子文件夹,我们创建一个新的树节点,并在它是目录的情况下递归调用`TraverseDirectory`。 为了将...

    遍历一个目录下的所有文件(VC++6.0源代码)

    在编程领域,尤其是在Windows系统上开发应用程序时,有时我们需要遍历一个特定目录及其子目录下的所有文件,以便进行文件操作、文件查找或者文件管理。在本案例中,我们关注的是如何使用VC++6.0来实现这个功能。VC++...

    vc遍历文件夹

    逐层遍历文件夹。筛选自己想要的文件。 vc遍历文件夹

    vc 遍历 文件夹及文件 含通用类 CPath

    在VC++编程环境中,遍历文件夹和文件是一项常见的任务,尤其在开发涉及文件操作的应用程序时。这里我们将深入探讨如何使用C++和MFC(Microsoft Foundation Classes)库中的类来实现这一功能,并重点关注提供的通用类...

    VC遍历文件夹_修改文件名

    VC遍历文件夹_修改文件名,我自己写的。。 希望和大家交流。。 是因为我用Sothink SWF Decompiler这个软件,生成的MP3文件名都是相同的文件名,很烦人,所以我就做了这样一个小工具,让文件名重命名为文件夹的名字。

    vc对文件夹遍历其下的所有子文件夹和文件

    在VC++编程环境中,遍历一个文件夹及其所有子文件夹和文件是一项常见的任务,尤其在处理大量数据或需要批量操作文件时。本篇将详细解释如何使用VC++实现这一功能,主要涉及的知识点包括文件系统操作、递归算法以及...

    遍历文件夹删除垃圾文件

    这些函数允许程序逐个访问指定目录下的所有文件和子目录。 3. **文件操作**:程序能够识别并删除“垃圾文件”,这意味着它需要对文件进行读取、判断和删除操作。在C++中,可以使用`fstream`库或者Windows API的`...

    MFC遍历指定文件夹下的所以文件及占空间大小

    你可以使用`CFileFind`的`FindFile()`和`FindNextFile()`方法来遍历指定目录下的所有文件。这两个方法会返回一个布尔值,表示是否找到下一个文件。在循环中,你可以检查当前文件是否是一个目录(通过`IsDirectory()`...

    VC 递归和非递归算法遍历磁盘文件

    2. 遍历该目录下的所有文件,执行需要的操作。 3. 对每个子目录,再次调用同样的遍历函数,将子目录作为新的根目录。 递归算法的优点在于代码简洁,逻辑清晰,易于理解和实现。但是,递归深度过大会消耗大量的栈...

    遍历文件夹 vc

    "遍历文件夹 VC"这个标题暗示了我们将在Visual C++(VC)环境下讨论如何遍历并访问指定文件夹中的所有文件。在这个场景下,我们将深入理解文件系统操作,并学习如何使用C++语言实现这一功能。 遍历文件夹是指程序...

Global site tag (gtag.js) - Google Analytics