VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 1429|回复: 1

[原创] 遍历目录下不同属性类型的文件

[复制链接]
83_avatar_middle
最佳答案
0 
在线会员 发表于 2023-9-10 11:42:10 | 显示全部楼层 |阅读模式

  1. //遍历文件
  2. BOOL EnumFile(TCHAR* lpszPath, TCHAR* lpszType)
  3. {

  4.         size_t lpsz_path_len;
  5.         size_t lpsz_type_len;
  6.         if (STRSAFE_E_INVALID_PARAMETER == StringCchLength(lpszPath, MAX_PATH, &lpsz_path_len) ||
  7.                 STRSAFE_E_INVALID_PARAMETER == StringCchLength(lpszType, MAX_PATH, &lpsz_type_len)
  8.                 )
  9.         {
  10.                 return FALSE;
  11.         }//判断非NULL
  12.        
  13.        

  14.         if (CString(lpszPath).Trim().IsEmpty() || CString(lpszType).Trim().IsEmpty())
  15.         {
  16.                 return FALSE;
  17.         } //判断非BLANK



  18.         if (lpsz_path_len + lpsz_type_len > MAX_PATH)
  19.         {
  20.                 return FALSE;
  21.         } //字符串拼接校验


  22.         HANDLE hFileFind;

  23.         TCHAR szPath[MAX_PATH] = { 0 };
  24.         _stprintf(szPath, _T("%s\\%s"), lpszPath, lpszType);

  25.         WIN32_FIND_DATA lpFindFileData;
  26.         hFileFind = FindFirstFile(szPath,&lpFindFileData);
  27.        
  28.         if (hFileFind == INVALID_HANDLE_VALUE)
  29.                 return FALSE; //用户输入的目录找不到文件


  30.         do{

  31.                 if (lpFindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)                         //文件夹
  32.                 {

  33.                         if(
  34.                                 !_tcscmp(lpFindFileData.cFileName, _T(".")) ||
  35.                                 !_tcscmp(lpFindFileData.cFileName,_T(".."))
  36.                                 )
  37.                         {
  38.                                 continue;
  39.                         }


  40.                         std::cout << "文件夹:";
  41.                 }
  42.                 else
  43.                 {
  44.                         if (lpFindFileData.dwFileAttributes & FILE_ATTRIBUTE_READONLY) //只读文件
  45.                         {
  46.                                 std::cout << "只读文件:";
  47.                         }
  48.                         else if (lpFindFileData.dwFileAttributes & FILE_ATTRIBUTE_ENCRYPTED) //加密文件
  49.                         {
  50.                                 std::cout << "加密文件:";
  51.                         }
  52.                         else if (lpFindFileData.dwFileAttributes & FILE_ATTRIBUTE_TEMPORARY) //临时文件
  53.                         {
  54.                                 std::cout << "临时文件:";
  55.                         }
  56.                         else  //文件
  57.                         {
  58.                                 cout << "文件:";
  59.                         }

  60.                 }

  61.                 std::wcout << lpFindFileData.cFileName << endl;

  62.         } while (FindNextFile(hFileFind,&lpFindFileData));

  63. }

  64. int _tmain(int argc,TCHAR* argv)
  65. {
  66.         TCHAR ugii_root_dir_path[MAX_PATH] = {0};
  67.         GetEnvironmentVariable(_T("UGII_ROOT_DIR"), ugii_root_dir_path,MAX_PATH);

  68.         //读取UGII_ROOT_DIR 目录下的全部的dll文件
  69.         EnumFile(ugii_root_dir_path,_T("*.*"));

  70.         return 0;
  71. }

复制代码




上一篇:vs2008,修改代码重新编译不生效?
下一篇:复杂的宽窄字节数据类型
29_avatar_middle
最佳答案
0 
在线会员 发表于 2023-9-12 13:59:36 | 显示全部楼层
谢谢大佬,学习学习
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号-4 )|网站地图wx_jqr

GMT+8, 2024-3-2 14:37

Powered by CcTry.CoM

© 2009-2021 cctry.com

快速回复 返回顶部 返回列表