递归遍历整个目录的代码
来源:互联网 发布:win10关闭网络唤醒 编辑:程序博客网 时间:2024/06/05 06:20
#include <windows.h>
#include "stdio.h"
char file_name[1024*1024][100] = {0};
BOOL IsRoot(LPCTSTR lpszPath)
{
TCHAR szRoot[4];
wsprintf(szRoot, "%c:\\", lpszPath[0]);
return (lstrcmp(szRoot, lpszPath) == 0);
}
long cnt = 0;
void FindInAll(::LPCTSTR lpszPath)
{
TCHAR szFind[MAX_PATH];
lstrcpy(szFind, lpszPath);
if (!IsRoot(szFind))
lstrcat(szFind, "\\");
lstrcat(szFind, "*.*"); // 找所有文件
WIN32_FIND_DATA wfd;
HANDLE hFind = FindFirstFile(szFind, &wfd);
if (hFind == INVALID_HANDLE_VALUE) // 如果没有找到或查找失败
return;
do
{
if (wfd.cFileName[0] == '.')
continue; // 过滤这两个目录
if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
TCHAR szFile[MAX_PATH];
if (IsRoot(lpszPath))
wsprintf(szFile, "%s%s", lpszPath, wfd.cFileName);
else
wsprintf(szFile, "%s\\%s", lpszPath, wfd.cFileName);
FindInAll(szFile); // 如果找到的是目录,则进入此目录进行递归
}
else
{
TCHAR szFile[MAX_PATH];
if (IsRoot(lpszPath))
wsprintf(szFile, "%s%s", lpszPath, wfd.cFileName);
else
wsprintf(szFile, "%s\\%s", lpszPath, wfd.cFileName);
//printf("%s\n",szFile);
// 对文件进行操作
memcpy(&file_name[cnt++][0], szFile, strlen(szFile) + 1);
}
} while (FindNextFile(hFind, &wfd));
FindClose(hFind); // 关闭查找句柄
}
void FindInAll_del(::LPCTSTR lpszPath)
{
TCHAR szFind[MAX_PATH];
lstrcpy(szFind, lpszPath);
if (!IsRoot(szFind))
lstrcat(szFind, "\\");
lstrcat(szFind, "*.*"); // 找所有文件
WIN32_FIND_DATA wfd;
HANDLE hFind = FindFirstFile(szFind, &wfd);
if (hFind == INVALID_HANDLE_VALUE) // 如果没有找到或查找失败
return;
do
{
if (wfd.cFileName[0] == '.')
continue; // 过滤这两个目录
if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
TCHAR szFile[MAX_PATH];
if (IsRoot(lpszPath))
wsprintf(szFile, "%s%s", lpszPath, wfd.cFileName);
else
wsprintf(szFile, "%s\\%s", lpszPath, wfd.cFileName);
FindInAll(szFile); // 如果找到的是目录,则进入此目录进行递归
}
else
{
TCHAR szFile[MAX_PATH];
if (IsRoot(lpszPath))
wsprintf(szFile, "%s%s", lpszPath, wfd.cFileName);
else
wsprintf(szFile, "%s\\%s", lpszPath, wfd.cFileName);
printf("%s\n",szFile);
// 对文件进行操作
memcpy(&file_name[cnt++][0], szFile, strlen(szFile) + 1);
}
} while (FindNextFile(hFind, &wfd));
FindClose(hFind); // 关闭查找句柄
}
int main(int argc, char* argv[])
{
//FindInAll("C:\\Users\\cui\\Desktop\\del\\del\\del\\test_dir");
FindInAll("F:\\linux-2.6.37");
printf("\n");
int index = 0;
while(file_name[index][0]){
printf("%s\n", &file_name[index][0]);
index++;
}
printf("index:%d\n", index);
getchar();
return 0;
}
0 0
- 递归遍历整个目录的代码
- 递归遍历目录代码
- 目录的递归遍历
- 目录的递归遍历
- 如何遍历整个目录
- 遍历整个目录
- 如何遍历整个目录
- 遍历整个目录树的文件和目录
- 拷贝整个目录的VC代码
- 使用debian包递归安装整个目录下的内容;
- 使用md5sum递归生成整个目录的sum
- 使用md5sum递归生成整个目录的sum
- 运用递归的方式删除整个目录及其中的文件
- 使用md5sum递归生成整个目录的sum
- DFusion中lua调用c++生成的dll库,并且lua调用c++代码(遍历文件夹中整个目录)
- php遍历整个目录的文件以及文件夹
- C#遍历目录树的递归
- C#遍历目录树的 递归
- (水)POJ-2676 DFS,数独
- Hadoop 1.x MapReduce 模板类
- window10下qt creator下自定义并使用 基于Qt5.3.2
- 【面试题】判断链表中是否有环
- unity中利用mesh动态创建墙体
- 递归遍历整个目录的代码
- 二叉树的构建和三种遍历算法 (递归实现)
- 归并排序的3种实现
- 面向对象
- 学习笔记--Ajax:JSON格式返回数据
- Spring4.1.4 bean的加载与赋值
- 21. Merge Two Sorted Lists
- 读C#线程及线程池笔记
- 对HTTPCONNECTION的理解