图像处理的时候经常需要对一个目录的所有图像进行处理,遍历文件得c代码:

在windows中需要使用到宽字符。

另外,可以使用opencv封装的目录访问操作,下次给出。

  1. // DirTraverse.cpp : Defines the entry point for the console application.
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include "windows.h"
  6. #include <string.h>
  7. #include <Strsafe.h>
  8. #include <iostream>
  9.  
  10. using namespace std;
  11.  
  12. char *w2c(char *pcstr,const wchar_t *pwstr, size_t len);
  13. void TraverseDirectory(wchar_t Dir[MAX_PATH]);
  14. char * imageDir = "D:\\enroll\\";
  15.  
  16. int main( int argc, const char** argv )
  17. {
  18. locale loc( "chs" ); //支持中文输出,否则wchar可能无法输出值为中文的变量
  19. wcout.imbue( loc );
  20.  
  21. TraverseDirectory(L"D:\\images\\all_0407\\");
  22.  
  23. system("pause");
  24. return 0;
  25. }
  26.  
  27. //Converting a WChar string to a Ansi string
  28. char *w2c(char *pcstr,const wchar_t *pwstr, size_t len)
  29. {
  30. int nlength=wcslen(pwstr);
  31. //获取转换后的长度
  32. int nbytes = WideCharToMultiByte( 0, 0, pwstr, nlength, NULL,0,NULL, NULL );
  33. if(nbytes>len) nbytes=len;
  34. // 通过以上得到的结果,转换unicode 字符为ascii 字符
  35. WideCharToMultiByte( 0,0, pwstr, nlength, pcstr, nbytes, NULL, NULL );
  36. return pcstr ;
  37. }
  38.  
  39. //传入要遍历的文件夹路径,并遍历相应文件夹
  40. void TraverseDirectory(wchar_t Dir[MAX_PATH])
  41. {
  42. WIN32_FIND_DATA FindFileData;
  43. HANDLE hFind=INVALID_HANDLE_VALUE;
  44. wchar_t DirSpec[MAX_PATH]; //定义要遍历的文件夹的目录
  45. DWORD dwError;
  46. StringCchCopy(DirSpec,MAX_PATH,Dir);
  47. StringCchCat(DirSpec,MAX_PATH,TEXT("\\*")); //定义要遍历的文件夹的完整路径\*
  48.  
  49. hFind=FindFirstFile(DirSpec,&FindFileData); //找到文件夹中的第一个文件
  50.  
  51. if(hFind==INVALID_HANDLE_VALUE) //如果hFind句柄创建失败,输出错误信息
  52. {
  53. FindClose(hFind);
  54. return;
  55. }
  56. else
  57. {
  58. while(FindNextFile(hFind,&FindFileData)!=0) //当文件或者文件夹存在时
  59. {
  60. if((FindFileData.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY)!=0&&wcscmp(FindFileData.cFileName,L".")==0||wcscmp(FindFileData.cFileName,L"..")==0) //判断是文件夹&&表示为"."||表示为"."
  61. {
  62. continue;
  63. }
  64. if((FindFileData.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY)!=0) //判断如果是文件夹
  65. {
  66. wchar_t DirAdd[MAX_PATH];
  67. StringCchCopy(DirAdd,MAX_PATH,Dir);
  68. StringCchCat(DirAdd,MAX_PATH,TEXT("\\"));
  69. StringCchCat(DirAdd,MAX_PATH,FindFileData.cFileName); //拼接得到此文件夹的完整路径
  70. TraverseDirectory(DirAdd); //实现递归调用
  71. }
  72. if((FindFileData.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY)==0) //如果不是文件夹
  73. {
  74. //wcout<<Dir<<"\\"<<FindFileData.cFileName<<endl; //输出完整路径
  75. char * fname = (char*)malloc(sizeof(char)*(2*wcslen(FindFileData.cFileName)+1));
  76. memset(fname,0,2*wcslen(FindFileData.cFileName)+1);
  77. w2c(fname, FindFileData.cFileName, 2*wcslen(FindFileData.cFileName)+1); // 获取文件名
  78. cout<<fname<<endl;
  79.  
  80. if(strstr(fname, ".jpg"))
  81. {
  82. char * fullName = (char*)malloc(strlen(imageDir)+strlen(fname)+1);
  83. strcpy(fullName, imageDir);
  84. strcat(fullName, fname); // 获取完全路径
  85. // process
  86. // TODO
  87. //
  88. free(fullName);
  89. }
  90. // free
  91. free(fname);
  92. }
  93. }
  94. FindClose(hFind);
  95. }
  96. }

采用标准c进行目录文件遍历的更多相关文章

  1. WEB安全第二篇--用文件搞定服务器:任意文件上传、文件包含与任意目录文件遍历

    零.前言 最近做专心web安全有一段时间了,但是目测后面的活会有些复杂,涉及到更多的中间件.底层安全.漏洞研究与安全建设等越来越复杂的东东,所以在这里想写一个系列关于web安全基础以及一些讨巧的pay ...

  2. Python 中当前位置以及目录文件遍历操作

    Python 中当前位置以及目录文件遍历操作 当前位置 print(os.path.dirname(__file__)) 其中 dirname 会选择目录(文件夹),"__file__&qu ...

  3. php glob()函数实现目录文件遍历与寻找与模式匹配的文件路径

    采用PHP函数glob实现寻找与模式匹配的文件路径,主要讨论glob()函数的作用和用法,利用glob函数读取目录比其它的要快N倍,因为glob函数是内置函数处理起来自然要快. 一,函数原型 arra ...

  4. PHP目录文件遍历

    <meta charset="utf-8"><?php //遍历文件中的所有文件名称 foreach(glob("phpmyadmin/*") ...

  5. python---filecmp 实现文件,目录,遍历子目录的差异对比功能。

    python---filecmp ilecmp可以实现文件,目录,遍历子目录的差异对比功能. 自带filecmp模块,无需安装. 常用方法说明 filecmp提供3个操作方法,cmp(单文件对比),c ...

  6. Linux目录文件详解FHS标准(2013.09.05)

    Linux 目录配置的依据FHS(Filesystem Hierarchy Standard)标准,将目录分成为四种交互作用的形态: 四种形态的具体解释: 可分享的:可以分享给其他系统挂载使用的目录, ...

  7. python基础系列教程——Python3.x标准模块库目录

    python基础系列教程——Python3.x标准模块库目录 文本 string:通用字符串操作 re:正则表达式操作 difflib:差异计算工具 textwrap:文本填充 unicodedata ...

  8. python GUI编程tkinter示例之目录树遍历工具

    摘录 python核心编程 本节我们将展示一个中级的tkinter应用实例,这个应用是一个目录树遍历工具:它会从当前目录开始,提供一个文件列表,双击列表中任意的其他目录,就会使得工具切换到新目录中,用 ...

  9. [Python]处理windows下多级目录文件,上传到Linux服务器

    #-*- coding: utf-8 -*- __author__ = 'tsbc' import sys reload(sys) sys.setdefaultencoding('utf-8') im ...

随机推荐

  1. python学习之路-6 冒泡算法、递归、反射、os/sys模块详解

    算法 冒泡算法 # 冒泡算法就是将需要排序的元素看作是一个个"气泡",最小的"气泡"最先浮出水面,排在最前面.从小到大依次排列. # 代码如下: li = [9 ...

  2. iOS开发之Crash分析,以及收集

    一  先谈谈iOS的Crash收集方式: 1. APP 发生crash,用户手机手机上肯定会有crash纪录,当然删除了该app,或是删了再装 crash纪录还是没了. 2. 如果用户设置-隐私  同 ...

  3. Tomcat 内存与优化篇

    Tomcat 内存与优化一.Tomcat 运行环境介绍 1.Tomcat 本身无法直接在计算机上运行,需要依赖硬件基础上的操作系统和Java虚拟机: 2.Java 程序启动时JVM都会分配一个初始内存 ...

  4. [Firmware Warn]: GHES: Failed to read error status block address for hardware error source

    Firmware Warn 问题描述: 系统版本:Ubuntu 12.04 LTS. 系统启动后dmesg打印大量Firmware Warn告警信息到syslog文件中.信息如下: [Firmware ...

  5. EffectiveC#00--选择定义和实现接口,而不是继承

    1.继承就是说它是某物(is a的关系),针对相关类,而接口是说它有某个功能(behaves like.)可以是不相关的 基类是描述对象是什么,接口描述对象有某种行为. 2.不能在接口里提供任何成员的 ...

  6. 写个点击input框 下方弹出月份时间等

    <input type="text" name="test" id="test" value="" "& ...

  7. 写一个Windows上的守护进程(3)句柄的管理

    写一个Windows上的守护进程(3)句柄的管理 在Windows中编程,跟HANDLE打交道是家常便饭.为了防止忘记CloseHandle,我都是使用do-while-false手法: void f ...

  8. C++程序中不同变量、函数在内存中内存中的分布情况

    一.一个C++编译的程序占用的内存分为以下几个部分 1.栈区:由编译器自动分配 存放函数的参数值,局部变量的值等,操作方式类似于数据结构中的栈. 2.堆区:一般由程序员分配释放,若程序员不释放,程序结 ...

  9. 混合高斯模型和EM算法

    这篇讨论使用期望最大化算法(Expectation-Maximization)来进行密度估计(density estimation). 与k-means一样,给定的训练样本是,我们将隐含类别标签用表示 ...

  10. contentProvider内容提供者

    contentProvider内容提供者 15. 四 / android基础 / 没有评论   步骤 权限在application中注册 Source code     <provider an ...