25 windows_25_windows_File_Find 文件查找

windows_25_windows_File_Find 文件查找

  1. // windows_25_windows_File_Find.cpp : 定义控制台应用程序的入口点。
  2. //
  3. #include "stdafx.h"
  4. #include <windows.h>
  5. void FindAdv1( LPSTR pszPath,LPSTR pszType )
  6. {
  7. //构造一个查找字符串
  8. CHAR szFind[MAX_PATH] = { 0 };
  9. sprintf_s( szFind, MAX_PATH, "%s%s", pszPath, pszType );
  10. //开始查找
  11. WIN32_FIND_DATA find = { 0 };
  12. HANDLE hFind = FindFirstFile( szFind, &find );
  13. //显示查找结果
  14. BOOL bRet = TRUE;
  15. while (bRet == TRUE)
  16. {
  17. //判断为文件还是目录
  18. if (find.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) //如果与完不为空,那就是一个目录
  19. {
  20. //是目录
  21. printf( "目录:%s\n", find.cFileName );
  22. //排除 . .. 上级目录的表示法
  23. if (find.cFileName[0] != '.')
  24. {
  25. //构造下一层目录路径
  26. CHAR szNextPath[MAX_PATH] = { 0 };
  27. sprintf_s( szNextPath, MAX_PATH, "%s%s\\", pszPath, find.cFileName );
  28. //printf( "%s\n", szNextPath );
  29. FindAdv1( szNextPath, pszType );
  30. }
  31. }
  32. else
  33. {
  34. //是文件
  35. printf( "文件:%s\n", find.cFileName );
  36. }
  37. bRet = FindNextFile( hFind, &find );
  38. }
  39. //关闭
  40. FindClose( hFind );
  41. }
  42. //这个打印目录时少了一个点,上面FindAdv1有改进
  43. void FindAdv( LPSTR pszPath, LPSTR pszType )
  44. {
  45. //构造一个查找字符串
  46. CHAR szFind[MAX_PATH] = { 0 };
  47. sprintf_s( szFind, MAX_PATH, "%s%s", pszPath, pszType );
  48. //开始查找
  49. WIN32_FIND_DATA find = { 0 };
  50. HANDLE hFind = FindFirstFile( szFind, &find );
  51. //显示查找结果
  52. while (FindNextFile( hFind, &find ))
  53. {
  54. //判断为文件还是目录
  55. if (find.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) //如果与完不为空,那就是一个目录
  56. {
  57. //是目录
  58. printf( "目录:%s\n", find.cFileName );
  59. //排除 . .. 上级目录的表示法
  60. if (find.cFileName[0] == '.')
  61. {
  62. continue;
  63. }
  64. //构造下一层目录路径
  65. CHAR szNextPath[MAX_PATH] = { 0 };
  66. sprintf_s( szNextPath, MAX_PATH, "%s%s\\", pszPath, find.cFileName );
  67. //printf( "%s\n", szNextPath );
  68. FindAdv( szNextPath, pszType );
  69. }
  70. else
  71. {
  72. //是文件
  73. //printf( "文件:%s\n", find.cFileName );
  74. }
  75. }
  76. //关闭
  77. FindClose( hFind );
  78. }
  79. void Find( LPSTR pszPath )
  80. {
  81. //开始查找
  82. WIN32_FIND_DATA find = { 0 };
  83. HANDLE hFind = FindFirstFile( pszPath, &find );
  84. //显示查找结果
  85. while (FindNextFile( hFind, &find ))
  86. {
  87. //判断为文件还是目录
  88. if (find.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) //如果与完不为空,那就是一个目录
  89. {
  90. //是目录
  91. printf( "目录:%s\n", find.cFileName );
  92. }
  93. else
  94. {
  95. //是文件
  96. printf( "文件:%s\n", find.cFileName );
  97. }
  98. }
  99. //关闭
  100. FindClose( hFind );
  101. }
  102. int _tmain(int argc, _TCHAR* argv[])
  103. {
  104. //Find( "D:\\download\\*.*" );
  105. //FindAdv( "D:\\download\\","*.*" ); //缺失.体
  106. FindAdv1( "D:\\download\\", "*.*" ); //完善体
  107. return 0;
  108. }





posted @ 2016-06-10 11:56  -刀狂剑痴-  阅读(207)  评论(0编辑  收藏  举报