获得一个目录下的文件名及文件属性

    正在学习MFC如何获得一个目录下的文件名,现在了解到要使用两个API函数FindFirstFileFindNextFile先使用前者找到第一个文件,再用后者找到第二个,如此进行,知道找不到。

首先对两个函数做简要介绍:

FindFirstFile Function
   HANDLE WINAPI FindFirstFile(
     __in          LPCTSTR lpFileName,
     __out         LPWIN32_FIND_DATA lpFindFileData
   );

Parameters
   lpFileName 指向一个字符串,代表要寻找的文件名。

   lpFindFileData 指向一个缓冲区,函数会在缓冲区中返回一个WIN32_FIND_DATA结构
Return Value

   如果成功,会返回一个handle可以给FindNextFile或者FindClose使用;如果失败,返回INVALID_HANDLE_VALUE

WIN32_FIND_DATA Structure 

Contains information about the file that is found by the FindFirstFile, FindFirstFileEx, or FindNextFile function.

 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, 

*LPWIN32_FIND_DATA;

其中,文件的大小计算方法: 

(nFileSizeHigh * (MAXDWORD+1)) + nFileSizeLow.   
DWORD dwReserved0;        扩展的文件标记,之前一直定义为未使用,而在目前的MSDN上说明为"If the dwFileAttributes member includes the FILE_ATTRIBUTE_REPARSE_POINT attribute, this member specifies the reparse point tag."看起来好像是能否返回文件的所属类型。
cFileName 中只有文件名称,不包括路径。

 

FindNextFile Function

BOOL WINAPI FindNextFile(
     __in          HANDLE hFindFile,
     __out         LPWIN32_FIND_DATA lpFindFileData
   );
Parameters

hFindFile  FindFirstFile或者FindFirstFileEx返回的handle

lpFindFileData FindFirstFile的一样,用来返回找到的文件信息
Return Value

If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero (0). To get extended error information, call GetLastError.
If no matching files can be found, the GetLastError function returns ERROR_NO_MORE_FILES.

 

转自:获得一个目录下的文件名(作者:LooL 于2007-10-15上传)

原文网址http://www.aogosoft.com/downpage.asp?mode=viewtext&id=154

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值