zoukankan      html  css  js  c++  java
  • windows编程之目录遍历

    利用windows的API,FindFirstFile和FileNextFile,採用递归遍历指定目录中的全部文件及目录,第一次windows编程。代码写的非常臃肿难看。请大家多多包涵!

    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<windows.h>
    
    #define MAXN 100005
    
    using namespace std;
    
    void surf(WIN32_FIND_DATA myData)
    {
    	cout<<myData.ftCreationTime.dwLowDateTime<<endl;
    	cout<<myData.ftLastAccessTime.dwLowDateTime<<endl;
    	cout<<myData.ftLastWriteTime.dwLowDateTime<<endl;
    	SYSTEMTIME ctime , atime , wtime;
    	FileTimeToSystemTime(&myData.ftCreationTime , &ctime);
    	FileTimeToSystemTime(&myData.ftLastAccessTime , &atime);
    	FileTimeToSystemTime(&myData.ftLastWriteTime , &wtime);
    	printf("%d年%d月%d日%d时%d分%d秒
    "
    		 , ctime.wYear , ctime.wMonth , ctime.wDay , ctime.wHour , ctime.wMinute , ctime.wSecond);
    	printf("%d年%d月%d日%d时%d分%d秒
    "
    		 , atime.wYear , atime.wMonth , atime.wDay , atime.wHour , atime.wMinute , atime.wSecond);
    	printf("%d年%d月%d日%d时%d分%d秒
    "
    		 , wtime.wYear , wtime.wMonth , wtime.wDay , wtime.wHour , wtime.wMinute , wtime.wSecond);
    	cout<<endl<<endl;
    }
    
    void traverse(char *Str)
    {
    	WIN32_FIND_DATA myData;
    	HANDLE hFind = INVALID_HANDLE_VALUE;
    	char str[MAX_PATH] = {0};
    	strcpy(str , Str);
    	strcat(str , "/*");		//使用通配符进行匹配 
    	hFind = FindFirstFile(str , &myData);
    	if(INVALID_HANDLE_VALUE == hFind)
    		return ;
    	while(FindNextFile(hFind , &myData))
    	{
    		if(myData.cFileName[0] != '.')		//非返回文件夹时进行下一步 
    		{
    			cout<<"========="<<myData.cFileName<<"=========="<<endl; 
    			surf(myData);
    			if(myData.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY)		//推断是否为文件夹 
    			{
    				char dir[MAX_PATH] = {0};
    				snprintf(dir , MAX_PATH, "%s/%s" , Str , myData.cFileName);	//构造路径 
    				traverse(dir);
    			}
    		}
    	}
    	FindClose(hFind);	//关闭句柄 
    }
    
    int main()
    {
    	char *str = "./test";
    	traverse(str);
    }



    
    
    我的当前目录下的test目录有“haha”目录以及test.1 , test , 2 , test , 3三个文件,"haha"目录里又含有“ai”目录以及haha.1 , haha.2 , haha.3三个文件。“ai”目录里又含有“wo”目录以及ai.1 , ai.2 , ai.3三个文件,"wo"目录里有wo.1 , wo.2 , wo.3三个文件。。


    程序输出结果:

    =========haha==========
    1556376338
    2156419021
    2156419021
    2014年5月31日10时16分18秒
    2014年5月31日10时24分27秒
    2014年5月31日10时24分27秒


    =========ai==========
    2147248496
    772195107
    772195107
    2014年5月31日10时24分27秒
    2014年5月31日11时26分34秒
    2014年5月31日11时26分34秒


    =========ai.1==========
    2197291359
    2197291359
    2197291359
    2014年5月31日10时24分32秒
    2014年5月31日10时24分32秒
    2014年5月31日10时24分32秒


    =========ai.2==========
    2197291359
    2328198846
    2328198846
    2014年5月31日10时24分32秒
    2014年5月31日10时24分45秒
    2014年5月31日10时24分45秒


    =========ai.3==========
    2197291359
    2387262224
    2387262224
    2014年5月31日10时24分32秒
    2014年5月31日10时24分51秒
    2014年5月31日10时24分51秒


    =========wo==========
    752914004
    2835575798
    2835575798
    2014年5月31日11时26分33秒
    2014年5月31日15时40分33秒
    2014年5月31日15时40分33秒


    =========wo.1==========
    806557072
    806557072
    806557072
    2014年5月31日11时26分38秒
    2014年5月31日11时26分38秒
    2014年5月31日11时26分38秒


    =========wo.2==========
    870010701
    870010701
    870010701
    2014年5月31日11时26分44秒
    2014年5月31日11时26分44秒
    2014年5月31日11时26分44秒


    =========wo.3==========
    870010701
    923383754
    923383754
    2014年5月31日11时26分44秒
    2014年5月31日11时26分50秒
    2014年5月31日11时26分50秒


    =========haha.1==========
    1601118898
    1601118898
    1601118898
    2014年5月31日10时16分22秒
    2014年5月31日10时16分22秒
    2014年5月31日10时16分22秒


    =========haha.2==========
    1601118898
    1678113301
    1678113301
    2014年5月31日10时16分22秒
    2014年5月31日10时16分30秒
    2014年5月31日10时16分30秒


    =========haha.3==========
    1601118898
    1742136963
    1742136963
    2014年5月31日10时16分22秒
    2014年5月31日10时16分36秒
    2014年5月31日10时16分36秒


    =========test.1==========
    1835930690
    1835930690
    1601118898
    2014年5月31日10时23分55秒
    2014年5月31日10时23分55秒
    2014年5月31日10时16分22秒


    =========test.2==========
    1924505756
    1924505756
    1678113301
    2014年5月31日10时24分4秒
    2014年5月31日10时24分4秒
    2014年5月31日10时16分30秒


    =========test.3==========
    1924535758
    1924535758
    1742136963
    2014年5月31日10时24分4秒
    2014年5月31日10时24分4秒
    2014年5月31日10时16分36秒



  • 相关阅读:
    大数据组件原理总结-Hadoop、Hbase、Kafka、Zookeeper、Spark
    淘宝搜索引擎的缓存机制入门总结
    Log4j写日志文件使用详解
    storm入门(一):storm编程框架与举例
    storm入门(二):关于storm中某一段时间内topN的计算入门
    关于京东推荐模型的阅读理解
    运维开发入门记录
    Redis 3.0.0 集群部署
    Redis集群部署
    秘籍
  • 原文地址:https://www.cnblogs.com/wgwyanfs/p/6755062.html
Copyright © 2011-2022 走看看