C++ 如何检查文件夹中有多少文件?
我想检查指定目录中有多少文件。例如,我在.exe旁边有一个名为C++ 如何检查文件夹中有多少文件?,c++,windows,file,C++,Windows,File,我想检查指定目录中有多少文件。例如,我在.exe旁边有一个名为resources的目录,我想检查其中有多少.txt文件 这是如何在Windows中C++中完成的? 我会使用boost::filesystem。甚至还有一个文件系统为您完成了大部分工作。我会使用boost::filesystem。甚至还有一个可以为您完成大部分工作的系统。这取决于操作系统。在Windows上,您可以使用和来枚举目录内容,使用适当的过滤器,如“*.txt”。做完后别忘了打电话 在基于Unix的操作系统上,可以使用和枚举
resources
的目录,我想检查其中有多少.txt文件
<>这是如何在Windows中C++中完成的? 我会使用boost::filesystem。甚至还有一个文件系统为您完成了大部分工作。我会使用boost::filesystem。甚至还有一个可以为您完成大部分工作的系统。这取决于操作系统。在Windows上,您可以使用和来枚举目录内容,使用适当的过滤器,如
“*.txt”
。做完后别忘了打电话
在基于Unix的操作系统上,可以使用和枚举目录内容。你必须自己过滤文件名。完成后别忘了打电话。这取决于操作系统。在Windows上,您可以使用和来枚举目录内容,使用适当的过滤器,如
“*.txt”
。做完后别忘了打电话
在基于Unix的操作系统上,可以使用和枚举目录内容。你必须自己过滤文件名。完成后别忘了打电话。此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);
}
#包括
#包括
#定义_WIN32_WINNT 0x0501
#包括
#定义BUFSIZE MAX_路径
int main(int argc,char*argv[])
{
WIN32_FIND_DATA FindFileData;
句柄hFind=无效的句柄值;
德沃德误差;
LPSTR-DirSpec;
无符号整数文件=0;
DirSpec=(LPSTR)malloc(BUFSIZE);
strcpy(DirSpec,“c:\\*.txt”);
printf(“当前目录:%s\n\n”,DirSpec);
hFind=FindFirstFile(DirSpec和FindFileData);
if(hFind==无效的句柄值)
{
printf(“不正确的句柄:%u.\n”,GetLastError());
返回(-1);
}
其他的
{
printf(“%s\n”,FindFileData.cFileName);
while(FindNextFile(hFind和FindFileData)!=0)
{
nFiles++;
printf(“%s\n”,FindFileData.cFileName);
}
dwError=GetLastError();
FindClose(hFind);
printf(“\n找到%d个文件。\n\n”,n文件);
if(dwError!=错误\u无\u更多\u文件)
{
printf(“FindNextFile错误。\n”,dwError);
返回(-1);
}
}
免费(DirSpec);
返回(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);
}
#包括
#包括
#定义_WIN32_WINNT 0x0501
#包括
#定义BUFSIZE MAX_路径
int main(int argc,char*argv[])
{
WIN32_FIND_DATA FindFileData;
句柄hFind=无效的句柄值;
德沃德误差;
LPSTR-DirSpec;
无符号整数文件=0;
DirSpec=(LPSTR)malloc(BUFSIZE);
strcpy(DirSpec,“c:\\*.txt”);
printf(“当前目录:%s\n\n”,DirSpec);
hFind=FindFirstFile(DirSpec和FindFileData);
if(hFind==无效的句柄值)
{
printf(“不正确的句柄:%u.\n”,GetLastError());
返回(-1);
}
其他的
{
printf(“%s\n”,FindFileData.cFileName);
while(FindNextFile(hFind和FindFileData)!=0)
{
nFiles++;
printf(“%s\n”,FindFileData.cFileName);
}
dwError=GetLastError();
FindClose(hFind);
printf(“\n找到%d个文件。\n\n”,n文件);
if(dwError!=错误\u无\u更多\u文件)
{
printf(“FindNextFile错误。\n”,dwError);
返回(-1);
}
}
免费(DirSpec);
返回(0);
}
100%依赖操作系统。请注意,有些用C语言编程的系统甚至不存在任何类型的系统。如果在这样的系统上调用fopen,则会出现链接器错误!现在标记为Windows,因此它将是FindFirstFile()、FindNextFile()和FindClose()API调用。100%依赖于操作系统。请注意,有些用C语言编程的系统甚至不存在任何类型的系统。如果在这样的系统上调用fopen,则会出现链接器错误!现在标记为Windows,因此将使用FindFirstFile()、FindTextFile()和FindClose()API调用。