【问题标题】:Reorder files and folders重新排序文件和文件夹
【发布时间】:2010-12-18 13:48:01
【问题描述】:

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

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

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

【问题讨论】:

    标签: c list directory


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        您需要阅读它们并自行排序。或者使用一个不同的库函数来为你做这件事。

        【讨论】:

          【解决方案4】:

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

          最后将两个列表分别与目录和文件合并。 此方法将在 O(N) 一次通过后完成,合并只需要一条指令,即 O(1)。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-02-18
            • 2018-07-31
            • 2016-12-16
            • 2020-03-29
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-06-29
            相关资源
            最近更新 更多