如何检查文件夹中有多少文件?

时间:2012-01-04 20:03:10

标签: c++ windows file

我想检查指定目录中有多少文件。例如,我的.exe旁边有一个名为resources的目录,我想检查一下.txt文件中有多少个。

如何在Windows中使用C ++完成此操作?

3 个答案:

答案 0 :(得分:6)

我使用boost :: filesystem。甚至还有sample program,其中大部分工作都是为您完成的。

答案 1 :(得分:3)

这取决于操作系统。在Windows上,您可以使用FindFirstFileFindNextFile来枚举目录内容,使用适当的过滤器,例如"*.txt"。完成后不要忘记致电FindClose

在基于Unix的操作系统上,您可以使用opendir(3)readdir(3)枚举目录内容。您必须自己过滤文件名。完成后别忘了打电话给closedir(3)

答案 2 :(得分:0)

此MS Windows代码列出了C:中的所有.txt个文件。要列出所有其他文件,请将strcpy(DirSpec, "c:\\*.txt")更改为strcpy(DirSpec, "c:\\*")

#include <stdio.h> 
#include <stdlib.h> 
#define _WIN32_WINNT 0x0501 
#include <windows.h> 
#define BUFSIZE MAX_PATH 

int main(int argc, char *argv[]) 
{ 
    WIN32_FIND_DATA FindFileData; 
    HANDLE hFind = INVALID_HANDLE_VALUE; 
    DWORD dwError; 
    LPSTR DirSpec;
    unsigned int nFiles=0;
    DirSpec = (LPSTR) malloc (BUFSIZE); 
    strcpy(DirSpec, "c:\\*.txt"); 

    printf ("Current directory : %s\n\n", DirSpec); 

    hFind = FindFirstFile(DirSpec, &FindFileData); 
    if (hFind == INVALID_HANDLE_VALUE) 
    { 
        printf ("incorrect Handle : %u.\n", GetLastError()); 
        return (-1); 
    } 
    else 
    { 
        printf ("%s\n", FindFileData.cFileName); 


        while ( FindNextFile (hFind, &FindFileData) != 0) 
        { 
             nFiles++;
             printf ("%s\n", FindFileData.cFileName); 
        } 

        dwError = GetLastError(); 
        FindClose(hFind); 

        printf ("\n %d files found.\n\n", nFiles); 

        if (dwError != ERROR_NO_MORE_FILES) 
        { 
             printf ("FindNextFile Error.\n", dwError); 
             return (-1); 
        } 
    } 
    free(DirSpec); 
   return (0); 
}