重新排序文件和文件夹

时间:2009-11-20 01:31:53

标签: c list directory

我使用dirent&amp ;;获得了一个文件和文件夹列表。 C中的stat,但它们不是我想要的顺序。我想它会首先列出目录然后列出文件。 例如:

.
..
[dir1]
[dir2]
[file1]
[file2]

有没有办法用dirent做到这一点?或者我不想手动订购输出列表。 感谢。

4 个答案:

答案 0 :(得分:3)

如果使用opendir / readdir,则必须对它们进行排序,但是如果要获取所有目录,可以使用 scandir(3)(假设您使用的是* nix系统)条目已排序。

答案 1 :(得分:0)

在目录中进行两次传递,首先只显示dirs,在第二次只显示文件。如果你只是想要dirs-then-files,我只会这样做;如果您有一些详细的排序标准,我会将条目存储在一个数组中并使用自定义排序功能对其进行排序。

答案 2 :(得分:0)

您需要阅读它们并对自己进行排序。或者使用不同的库函数来为您完成。

答案 3 :(得分:0)

您可以维护两个数据结构,一个用于dir,另一个用于文件。 一旦开始使用dirent读取目录,请插入相应的结构运行时。

最后将两个列表分别与目录和文件合并。 该方法将在一次通过O(N)中完成,并且合并将仅采用一个指令,即O(1)。