文档章节

C++遍历文件夹

节操狗
 节操狗
发布于 2015/06/10 01:18
字数 181
阅读 10
收藏 0
#include <windows.h>
#include <stdio.h>
#include <string.h>
#define LEN 1024

FILE *fp=fopen("traverse.xls", "w");


// 深度优先递归遍历目录中所有的文件

BOOL  DirectoryList(LPCSTR Path)
{
     WIN32_FIND_DATA FindData;
     HANDLE hError;
     int FileCount = 0;
     char FilePathName[LEN];

     // 构造路径
     char FullPathName[LEN];
     
     strcpy(FilePathName, Path);
     strcat(FilePathName, "\\*.*");

     hError = FindFirstFile(FilePathName, &FindData);

     if (hError == INVALID_HANDLE_VALUE)
	 {
         printf("搜索失败!");
         return 0;
	 }

     while(::FindNextFile(hError, &FindData))
	 {
         // 过虑.和..
         if (strcmp(FindData.cFileName, ".") == 0 
             || strcmp(FindData.cFileName, "..") == 0 )
		 {
            continue;
		 }
   
         // 构造完整路径
        wsprintf(FullPathName, "%s\\%s\\%s", Path,FindData.cFileName,FindData.dwFileAttributes);
		
        FileCount++;
        // 输出本级的文件
        printf("\n---%d  %s  ", FileCount, FullPathName);
		

		fprintf(fp, "%s\n", FullPathName);
 
        if (FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
		{
             printf("<Dir>");
             DirectoryList(FullPathName);
		}
        
	 }
	 
     return 0;
}
 
int main(int argc, char **argv)
{
	fprintf(fp, "%s\t %s\n","文件名","文件大小");

	char search[50];
    printf("请输入文件父路径:比如:\nD:\\123\n");
    scanf("%s",search);
    DirectoryList(search);

	fclose(fp);

    system("PAUSE");    
 
    return 0;
}


© 著作权归作者所有

共有 人打赏支持
节操狗
粉丝 0
博文 8
码字总数 5547
作品 0
西安
程序员
Error list iterator not incrementable

Container Traverse for(iterator it = begin(); it != end(); ++it) for(iterator it = begin(); it != end(); it++) 两种方式iterator遍历的次数是相同的,但在STL中效率不同,前++--返回引......

nao
2014/04/11
0
0
Effective STL - 容器

STL(standard template library)提供了一组表示容器,迭代器,函数对象和算法的模板。容器是一个与数组类似的单元,可以存若干个值。 STL容器是同质的,即存储的值的类型相同;算法是完成特...

積木leayn
2013/10/07
0
0
在 Qt4 中使用 C++11

在 Qt4 中使用 C++11 原文出处:blog.qt.digia.com/cn/2011/08/22/cpp0x-in-qt 我们前面介绍了许多 C++ 11 的优点,而且介绍了如何在 Qt 5 中使用 C++ 11。但是,Qt 5 毕竟只是一个尚未发布的...

ruguonandao
2013/03/14
0
0
STL list链表的用法详解

------------------------------------------------------------------------------- 原来... STL list链表的用法详解 本文以List容器为例子,介绍了STL的基本内容,从容器到迭代器,再到普通...

nao
2014/04/10
0
0
VBS脚本:删除扩展名不是*.h、*.c、*.cpp的全部文件

用VC6.0写了好多代码,编译过后生成了很多不想要的文件。于是我写了下面这个脚本,只把里面的代码文件留下。 脚本编写的思想如下: 先进行输入合法性检查 脚本使用例程CleanFolder遍历一个文...

北风其凉
2014/08/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Linux环境搭建 | VMware下共享文件夹的实现

在进行程序开发的过程中,我们经常要在主机与虚拟机之间传递文件,比如说,源代码位于虚拟机,而在主机下阅读或修改源代码,这里就需要使用到 「共享文件」 这个机制了。本文介绍了两种共享文...

良许Linux
58分钟前
4
0
JUC锁框架——AQS源码分析

JUC锁介绍 Java的并发框架JUC(java.util.concurrent)中锁是最重要的一个工具。因为锁,才能实现正确的并发访问。而AbstractQueuedSynchronizer(AQS)是一个用来构建锁和同步器的框架,使用A...

长头发-dawn
今天
1
0
docker中安装了RabbitMQ后无法访问其Web管理页面

在官网找了"$ docker run -d --hostname my-rabbit --name some-rabbit -p 8080:15672 rabbitmq:3-management"这条安装命令,在docker上安装了RabbitMQ,,结果输入http://localhost:8080并不......

钟然千落
今天
4
1
spring-cloud | 分布式session共享

写在前面的话 各位小伙伴,你们有福了,这一节不仅教大家怎么实现分布式session的问题,还用kotlin开发,喜欢kotlin的小伙伴是不是很开心! 以前在写Android的时候,就对客户端请求有一定的认...

冯文议
今天
3
0
c语言之内存分配笔记

先看一个数组: short array[5] = {1,2} // 这儿定义的一个int类型的数组,数组第1和第2个元素值是1和2.其余后面默认会给值为0; 或者 short array[] = {1,2};//这儿数组第1和第2个元素,数组...

DannyCoder
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部