一、先介绍一个结构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++(Visual C++)来实现这一功能,以及涉及的相关知识点。 首先,我们需要理解...
VC下遍历文件夹、建成目录树
本文将深入探讨如何使用C++在Visual C++(VC)中实现递归遍历指定文件夹及其子文件夹的所有文件,并构建一个树结构的表示。 首先,我们需要了解Windows API中的几个关键函数,它们是遍历文件系统的核心: 1. **...
### VC遍历文件夹知识点详解 #### 一、概述 在Windows编程中,遍历文件夹是一项常见的需求,尤其在开发文件管理软件时尤为重要。本文将详细介绍如何在Visual C++ (VC) 中使用Windows API来遍历文件夹,并获取文件夹...
通过这样的方式,你可以实现VC++中遍历文件夹下的所有文件,并根据需要进行过滤和处理。在实际项目中,可能还需要考虑多线程、错误处理等复杂情况,但上述基础方法已经涵盖了基本的文件遍历功能。记得在编写代码时,...
这些函数是基于迭代的方式,可以用来获取指定目录下的所有文件和子目录。 1. **`FindFirstFile`**:此函数用于开始一个文件搜索,它接收两个参数,一个是通配符路径(例如,"*.txt" 或者 "C:\\mydir\\*.*"),另一...
在IT领域,尤其是在系统管理和软件开发中,快速检索指定文件并遍历文件夹下的所有文件是一项常见的任务。这个过程涉及到操作系统的基本操作,如文件系统接口的使用,以及可能的编程技术,如脚本语言或API调用。下面...
在MFC(Microsoft Foundation Classes)环境下,开发C++应用程序时,常常需要处理文件系统操作,例如读取文件夹以及遍历其下的所有文件和子文件夹。本篇将详细讲解如何实现这一功能,并提供相关代码示例。 首先,...
功能为读取文件名,如果是文件夹,则继续遍历读取文件夹下面的列表,直到读到文件,则读取文件名
在编程领域,遍历文件夹中的所有文件是一项基础但至关重要的任务,特别是在处理大量数据或者进行文件操作时。本文将详细讲解如何使用C++语言在Windows环境下遍历磁盘上的每一层文件夹,并且该方法已经在Visual C++ ...
它首先调用`FindFirstFile`,然后在循环中不断调用`FindNextFile`,直到遍历完所有文件和子文件夹。对于每个文件或子文件夹,我们创建一个新的树节点,并在它是目录的情况下递归调用`TraverseDirectory`。 为了将...
在编程领域,尤其是在Windows系统上开发应用程序时,有时我们需要遍历一个特定目录及其子目录下的所有文件,以便进行文件操作、文件查找或者文件管理。在本案例中,我们关注的是如何使用VC++6.0来实现这个功能。VC++...
逐层遍历文件夹。筛选自己想要的文件。 vc遍历文件夹
在VC++编程环境中,遍历文件夹和文件是一项常见的任务,尤其在开发涉及文件操作的应用程序时。这里我们将深入探讨如何使用C++和MFC(Microsoft Foundation Classes)库中的类来实现这一功能,并重点关注提供的通用类...
VC遍历文件夹_修改文件名,我自己写的。。 希望和大家交流。。 是因为我用Sothink SWF Decompiler这个软件,生成的MP3文件名都是相同的文件名,很烦人,所以我就做了这样一个小工具,让文件名重命名为文件夹的名字。
在VC++编程环境中,遍历一个文件夹及其所有子文件夹和文件是一项常见的任务,尤其在处理大量数据或需要批量操作文件时。本篇将详细解释如何使用VC++实现这一功能,主要涉及的知识点包括文件系统操作、递归算法以及...
这些函数允许程序逐个访问指定目录下的所有文件和子目录。 3. **文件操作**:程序能够识别并删除“垃圾文件”,这意味着它需要对文件进行读取、判断和删除操作。在C++中,可以使用`fstream`库或者Windows API的`...
你可以使用`CFileFind`的`FindFile()`和`FindNextFile()`方法来遍历指定目录下的所有文件。这两个方法会返回一个布尔值,表示是否找到下一个文件。在循环中,你可以检查当前文件是否是一个目录(通过`IsDirectory()`...
2. 遍历该目录下的所有文件,执行需要的操作。 3. 对每个子目录,再次调用同样的遍历函数,将子目录作为新的根目录。 递归算法的优点在于代码简洁,逻辑清晰,易于理解和实现。但是,递归深度过大会消耗大量的栈...
"遍历文件夹 VC"这个标题暗示了我们将在Visual C++(VC)环境下讨论如何遍历并访问指定文件夹中的所有文件。在这个场景下,我们将深入理解文件系统操作,并学习如何使用C++语言实现这一功能。 遍历文件夹是指程序...