查找某个目录下的所有文件(包括子目录)
2005-06-11 23:07
501 查看
//原作者不详,偶然发现。然后稍做了修改,测试了以下。整理了一下。
#include "stdio.h"
#include "windows.h"
#include "winbase.h"
void FindFileInDir(char* rootDir);
main()
{
FindFileInDir("C://");
}
void FindFileInDir(char* rootDir)//, char* strRet)
{
char fname[1024];
ZeroMemory(fname, 1024);
WIN32_FIND_DATA fd;
ZeroMemory(&fd, sizeof(WIN32_FIND_DATA));
HANDLE hSearch;
char filePathName[256];
char tmpPath[256];
ZeroMemory(filePathName, 256);
ZeroMemory(tmpPath, 256);
strcpy(filePathName, rootDir);
BOOL bSearchFinished = FALSE;
if( filePathName[strlen(filePathName) -1] != '//' )
{
strcat(filePathName, "//");
}
strcat(filePathName, "*");
hSearch = FindFirstFile(filePathName, &fd);
//Is directory
if( (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
&& strcmp(fd.cFileName, ".") && strcmp(fd.cFileName, "..") )
{
strcpy(tmpPath, rootDir);
strcat(tmpPath, fd.cFileName);
if( tmpPath[strlen(tmpPath) -1] != '//' )
{
strcat(tmpPath, "//");
}
FindFileInDir(tmpPath);
}
while( !bSearchFinished )
{
if( FindNextFile(hSearch, &fd) )
{
if( (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
&& strcmp(fd.cFileName, ".") && strcmp(fd.cFileName, "..") )
{
strcpy(tmpPath, rootDir);
strcat(tmpPath, fd.cFileName);
if( tmpPath[strlen(tmpPath) -1] != '//' )
{
strcat(tmpPath, "//");
}
FindFileInDir(tmpPath);
}
else if( strcmp(fd.cFileName, ".") && strcmp(fd.cFileName, "..") )
{
printf("%s%s/n",rootDir,fd.cFileName);
}
}
else
{
if( GetLastError() == ERROR_NO_MORE_FILES )
{
bSearchFinished = TRUE;
}
else
bSearchFinished = TRUE;
}
}
FindClose(hSearch);
}
#include "stdio.h"
#include "windows.h"
#include "winbase.h"
void FindFileInDir(char* rootDir);
main()
{
FindFileInDir("C://");
}
void FindFileInDir(char* rootDir)//, char* strRet)
{
char fname[1024];
ZeroMemory(fname, 1024);
WIN32_FIND_DATA fd;
ZeroMemory(&fd, sizeof(WIN32_FIND_DATA));
HANDLE hSearch;
char filePathName[256];
char tmpPath[256];
ZeroMemory(filePathName, 256);
ZeroMemory(tmpPath, 256);
strcpy(filePathName, rootDir);
BOOL bSearchFinished = FALSE;
if( filePathName[strlen(filePathName) -1] != '//' )
{
strcat(filePathName, "//");
}
strcat(filePathName, "*");
hSearch = FindFirstFile(filePathName, &fd);
//Is directory
if( (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
&& strcmp(fd.cFileName, ".") && strcmp(fd.cFileName, "..") )
{
strcpy(tmpPath, rootDir);
strcat(tmpPath, fd.cFileName);
if( tmpPath[strlen(tmpPath) -1] != '//' )
{
strcat(tmpPath, "//");
}
FindFileInDir(tmpPath);
}
while( !bSearchFinished )
{
if( FindNextFile(hSearch, &fd) )
{
if( (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
&& strcmp(fd.cFileName, ".") && strcmp(fd.cFileName, "..") )
{
strcpy(tmpPath, rootDir);
strcat(tmpPath, fd.cFileName);
if( tmpPath[strlen(tmpPath) -1] != '//' )
{
strcat(tmpPath, "//");
}
FindFileInDir(tmpPath);
}
else if( strcmp(fd.cFileName, ".") && strcmp(fd.cFileName, "..") )
{
printf("%s%s/n",rootDir,fd.cFileName);
}
}
else
{
if( GetLastError() == ERROR_NO_MORE_FILES )
{
bSearchFinished = TRUE;
}
else
bSearchFinished = TRUE;
}
}
FindClose(hSearch);
}
相关文章推荐
- 使用FindFirstFile和FindNextFile查找某个目录下的所有文件(包括子目录)
- 使用FindFirstFile和FindNextFile查找某个目录下的所有文件(包括子目录)
- 使用FindFirstFile和FindNextFile查找某个目录下的所有文件(包括子目录)
- 使用FindFirstFile和FindNextFile查找某个目录下的所有文件(包括子目录)
- C查找某个目录下的所有文件(包括子目录)(转)
- 查找指定目录下所有文件(包括子目录)——使用递归
- 查找某个目录下的所有文件(包括子目录)
- C查找某个目录下的所有文件(包括子目录)(转)
- 使用FindFirstFile和FindNextFile查找某个目录下的所有文件(包括子目录)
- 使用FindFirstFile和FindNextFile查找某个目录下的所有文件(包括子目录)
- 读取目录下的所有文件(包括子目录下的所有文件)
- 查找目录下的及子目录下的 所有的给定后缀名的文件并将其路径打印到一个文件中。
- [Perl]读取当前目录下的所有文件,包括子目录下的文件
- shell编程: 获得目录下(包括子目录)所有文件名,路径和文件大小
- linux系统中用一条命令 查找/data目录及子目录下 内容包含 “hello” 的所有文件名称 及 所在行数
- Linux查找当前目录及其子目录下所有包含指定字符串的文件
- java 文件 读取目录下的所有文件(包括子目录)
- 获取某目录下的所有文件(包括子目录下文件)的数量(C#/VB.NET)
- Java遍历输出指定目录、树形结构所有文件包括子目录下的文件
- java遍历给定目录,树形结构输出所有文件,包括子目录中的文件