遍历文件时使用WIN32_FIND_DATA结构体

本文详细介绍了WIN32_FIND_DATA结构体的组成和使用方式,包括文件属性、创建时间、访问时间、修改时间、文件大小等关键信息,并通过伪代码展示了如何使用此结构体遍历文件目录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

WIN32_FIND_DATA文件结构说明:

typedef struct _WIN32_FIND_DATA {
  DWORD dwFileAttributes; //文件属性
  FILETIME ftCreationTime; // 文件创建时间
  FILETIME ftLastAccessTime; // 文件最后一次访问时间
  FILETIME ftLastWriteTime; // 文件最后一次修改时间
  DWORD nFileSizeHigh; // 文件长度高32位
  DWORD nFileSizeLow; // 文件长度低32位
  DWORD dwReserved0; // 系统保留
  DWORD dwReserved1; // 系统保留
  TCHAR cFileName[ MAX_PATH ]; // 文件名
  TCHAR cAlternateFileName[ 14 ]; // 8.3格式文件名

  } WIN32_FIND_DATA, *PWIN32_FIND_DATA;


// 使用此结构体遍历文件的伪代码过程类似于下面

void Enum(char* szPath)

{

WIN32_FIND_DATA wfda;

HANDLE hFind=::FindFirstFileA(szFind,&wfda);

if(INVALID_HANDLE_VALUE==hFind)
{
return FALSE;
}

while(true)

{

// 是目录

if(wfda.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)

{

//不是 .  ..目录

if(wfda.cFileName[0] != '.')

{

Enum(); //递归

}

}

else

{

//是文件,添加自己的处理

}

//找不到文件了,跳出去

if(!FindNextFileA())

{

break;

}

}

FindClose(hFind);
return TRUE;

}

  另外结构体最后一个cAlternateFileName变量是短文件名(类似于C:\PROGRA~1),

  如果要转换成长文件名使用GetLongPathName

  如果要将长文件名换成短文件名使用GetShortPathName



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值