在Windows上用C语言搜索文件
如何在计算机上搜索文件? 也许在寻找某些扩展 我需要遍历所有文件并检查文件名在Windows上用C语言搜索文件,c,windows,file,C,Windows,File,如何在计算机上搜索文件? 也许在寻找某些扩展 我需要遍历所有文件并检查文件名 假设我想查找扩展名为.code的所有文件。使用FindFirstFile()或FindNextFile()函数和递归算法遍历子文件夹。使用FindFirstFile()或FindNextFile()函数和递归算法遍历子文件夹。对于Windows,您可能希望查看和函数。如果要实现递归搜索,可以使用GetFileAttributes()检查文件\属性\目录。如果文件实际上是一个目录,请继续搜索。对于Windows,您需要查
假设我想查找扩展名为.code的所有文件。使用
FindFirstFile()
或FindNextFile()
函数和递归算法遍历子文件夹。使用FindFirstFile()
或FindNextFile()
函数和递归算法遍历子文件夹。对于Windows,您可能希望查看和函数。如果要实现递归搜索,可以使用GetFileAttributes()检查文件\属性\目录
。如果文件实际上是一个目录,请继续搜索。对于Windows,您需要查看和函数。如果要实现递归搜索,可以使用GetFileAttributes()检查文件\属性\目录
。如果该文件实际上是一个目录,请继续搜索。FindFirstFile()/FindNextFile()将在目录中查找文件列表。通过可能使用的子目录进行递归搜索
要将路径拆分为目录名和文件名,然后使用生成的目录详细信息执行递归目录搜索。FindFirstFile()/FindNextFile()将执行查找目录中文件列表的任务。通过可能使用的子目录进行递归搜索
将路径拆分为目录名和文件名,然后使用生成的目录详细信息进行递归目录搜索。FindFirstFile的一个好包装是dirent.h for windows(google dirent.h Toni Ronkko)
FindFirstFile的一个很好的包装器是dirent.h for windows(googledirent.h Toni Ronkko)
“通过解析”是什么意思?通过解析是什么意思?FindFirst/NextFile将告诉您文件的属性;不需要调用GetFileAttributes.FindFirst/NextFile将已经告诉您文件的属性;不需要调用GetFileAttributes。
#define S_ISREG(B) ((B)&_S_IFREG)
#define S_ISDIR(B) ((B)&_S_IFDIR)
static void
scan_dir(DirScan *d, const char *adir, BOOL recurse_dir)
{
DIR *dirfile;
int adir_len = strlen(adir);
if ((dirfile = opendir(adir)) != NULL) {
struct dirent *entry;
char path[MAX_PATH + 1];
char *file;
while ((entry = readdir(dirfile)) != NULL)
{
struct stat buf;
if(!strcmp(".",entry->d_name) || !strcmp("..",entry->d_name))
continue;
sprintf(path,"%s/%.*s", adir, MAX_PATH-2-adir_len, entry->d_name);
if (stat(path,&buf) != 0)
continue;
file = entry->d_name;
if (recurse_dir && S_ISDIR(buf.st_mode) )
scan_dir(d, path, recurse_dir);
else if (match_extension(path) && _access(path, R_OK) == 0) // e.g. match .code
strs_find_add_str(&d->files,&d->n_files,_strdup(path));
}
closedir(dirfile);
}
return;
}