我想创建一个读取目录并在数据结构中查找并保存所有目录以及每个目录的所有子目录的方法。具体来说,我希望将名称引用为:
文件夹1 文件夹11 文件夹12 文件夹2 文件夹21 文件夹22 文件夹23
我显然需要一个递归函数。我在控制台应用程序中使用临时类成员方法:
private:
struct dirent *ep;
void DirectoryReader::parseDirectory(char* readingDirectory)
{
char* tempDirectory = (char*)malloc(sizeof(readingDirectory) + 200);
string temp = readingDirectory;
DIR *dp;
dp = opendir (readingDirectory);
if (dp != NULL)
{
while (ep = readdir (dp))
{
puts (ep->d_name);
temp += readingDirectory;
temp += "/";
temp += ep->d_name;
char * buffer = new char[temp.length()];
strcpy(buffer,temp.c_str());
parseDirectory(buffer);
}
(void) closedir (dp);
}
else
perror ("Couldn't open the directory");
}
好的,我不知道最好的书面代码,但我想首先了解捕获的名称。但是它不能正常工作,因为它不止一次考虑父目录的名称。即使我把同一个方法的调用(不执行递归),前两个名称是 . 和 .. 。为什么?
您能否建议我执行所述过程的功能或指出此功能所需的更正?