windows api实现目录或文件读取

windows下实现目录或文件读取的实现方法很多,MFC下可以用CFileFind,
mingw32可以直接用linux下的opendir(),readdir(),closedir()一套,还有win32的API可以用。
本文使用的方法是windows API方法。

win API 方法用FindFirstFile(),FindNextFile(),FindClose()三个函数实现对目录或文件的读取。

例程如下,在程序的当前路径下,有article文件夹,内有若干txt文件。

eg:
#include 
#include 

void countFile(char* path)
{
    WIN32_FIND_DATA findFileData;
    HANDLE hFind;

     //find first file or directory
    hFind=FindFirstFile(path,&findFileData);

    if(hFind==INVALID_HANDLE_VALUE) 
    {//there is no file or directory exists
        printf("INVALID FILE HANDLE!\n");
    }
    else 
    {//there are files or directorys exists

        //print file or directory name
        printf("file:%s\n",findFileData.cFileName);  

        while(FindNextFile(hFind,&findFileData)==TRUE)  
        {//find files or directorys left
            printf("file:%s\n",findFileData.cFileName);
        }
        FindClose(hFind); 
    }
}

int main(int argc,char* argv[])
{
    countFile(".\\article\\*.txt");
    getchar();
    return 1;
}

运行结果如下:
windows api实现目录或文件读取_第1张图片

note:
1.FindFirstFile()第一个参数是文件路径,其输入格式如下。在程序的字符串中,”\”应写作”\”。
例如”c:\Windows*.“应写作”c:\Windows\.*” 。

c:\Windows\*.*//在c:\Windows目录中查找所有文件
c:\Windows\System32\*.dll//在c:\Windows\System32目录中查找所有dll文件
c:\Windows\System.ini;在c:\Windows目录中查找System.ini文件
c:\Windows\a???.*//在c:\Windows目录中查找所有以a开头的文件名长度.为4个字符的文件
Test.dat//在当前目录查找Test.dat文件
*.*//在当前目录查找所有文件

2.FindFirstFile()第二个参数是一个结构体,这个结构用于装载与找到的文件有关的信息。其声明如下。

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;  

3.本文参考了百度百科,以及其他人的博客,侵删。

你可能感兴趣的:(c语言,windows,api,文件目录,c语言)