gpt4 book ai didi

c++ - 在C++中查找所有目录中的所有文件

转载 作者:太空宇宙 更新时间:2023-11-04 16:25:17 24 4
gpt4 key购买 nike

我试图在所有目录中查找所有文件,但我不知道如何处理子目录。在这段代码中,代码遍历了所有子目录,但我不知道如何跳回。有谁知道如何做到这一点?

__declspec(dllexport) void GetFiles(char* filedir, char* path)
{
string s[1000];
string path2 = path;
UINT index = 0;

WIN32_FIND_DATA ffd;
TCHAR szDir[MAX_PATH];
HANDLE hFind = INVALID_HANDLE_VALUE;
DWORD dwError=0;

StringCchCopy(szDir, MAX_PATH, filedir);

if (INVALID_HANDLE_VALUE == hFind)
return;

do
{

DWORD attributes = ffd.dwFileAttributes;

if (attributes & FILE_ATTRIBUTE_HIDDEN)
continue;
else if (attributes & FILE_ATTRIBUTE_DIRECTORY)
{
TCHAR dir2[MAX_PATH];
path2 = path;
path2 += ffd.cFileName;
path2 += "\\*";
StringCchCopy(dir2, MAX_PATH, path2.c_str());
SetCurrentDirectory(dir2);
}
else
{
s[index] = path;
s[index] += ffd.cFileName;
index++;
}
}
while (FindNextFile(hFind, &ffd) >= 0); // needs to jump back if zero

FindClose(hFind);
}

编辑:函数有相同的名字混淆了编译器

最佳答案

我认为最简单的方法是执行递归函数。

这在“c”伪代码中大致看起来像这样

void GetFiles( char*** file_path_table, char* dir )
{
char **file_paths;
file_paths = getAllFiles( dir );
foreach( path in file_paths )
{
if ( is_directory( path ) )
{
GetFiles( file_path_table, path );
}
else
{
add_file_to_table( file_path_table, path );
}
}
}

关于c++ - 在C++中查找所有目录中的所有文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12568835/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com