【发布时间】:2020-07-30 06:41:15
【问题描述】:
我正在尝试对可以包含子文件夹的文件夹执行 DFS。目标是从目录中找到所有.txt 文件。我需要按照 DFS 找到它们的顺序查找 .txt 文件并保留文件夹中文件的顺序。
目前我用于扫描目录的代码使用scandir() 函数:
int n = scandir(path, &namelist, NULL, alphasort);
这将按字母顺序对文件夹中的文件进行排序,这并不是我想要的。
编辑:我尝试过使用 opendir() 和 readdir() ,但这是以看似随机的顺序访问文件。
【问题讨论】:
-
你在 Linux 上编程吗?
-
如果您不想对文件进行排序,
scandir()可能是该工作的错误工具。只使用opendir()、readdir()、closedir()有什么问题? -
要使用
versionsort#define _GNU_SOURCE需要在#include <dirent.h>之前 -
您说“保留文件夹中文件的顺序”,但您讨论了对文件夹中文件名称进行排序的不同方法。这令人费解——你想要哪个?以某种方式排序或“物理顺序”?如果您想要排序,那么
scandir()是一个不错的选择。如果你想要“物理顺序”,那是错误的选择。你到底在追求什么?您还提到了 DFS — 深度优先搜索。您是否应该查看nftw()的“(新)文件树遍历”?请通过在问题中编辑一些额外信息来阐明您的要求。 -
我很抱歉不清楚这一点。我的意思是按照文件出现的顺序遍历文件夹。我不知道如何描述这个订单。我也使用了 opendir() 和 readdir() 但这仍然是乱序访问文件。具体来说,我有文件夹 F1, F2, ... , F10 但它按 F4,F1,F5,F10,F,F8,F9,F2,F3,F7 的顺序访问它们