c++ - 什么决定了文件列出的顺序?

标签 c++ file-io

以下代码示例可让您了解目录中的所有文件。

DIR *pDIR;
struct dirent *entry;

if( (pDIR = opendir(path)) != NULL )
{
    while( (entry = readdir(pDIR)) != NULL )
    {
    if( strcmp(entry->d_name, ".") != 0 && strcmp(entry->d_name, "..") != 0 )
    {
            string path_to_file(path);
            path_to_file.append("/");
            path_to_file.append(entry->d_name);

            cout << path_to_file << endl;
        }
    }
}

文件未按字母顺序列出:是什么决定了它们的列出顺序?

最佳答案

正如 James 所说,没有指定顺序。文件系统可以按照它喜欢的任何顺序对文件进行排序,这完全取决于文件系统。在 Windows NTFS(和 OS/2 的 HPFS)中,文件确实是按字母顺序排列的(以二叉树的形式,便于按名称搜索文件)。在“DOS”FAT 文件系统中,文件按创建顺序排列,如果删除了一个文件,则该“槽”将用于创建的下一个文件。在Linux操作系统中ext{2,3,4}是最常用的,我认为它类似于FAT,但确切的结构并不相同。

还有许多其他文件系统(对于 Linux 至少有六个,几乎每个我没有提到名字的操作系统都有自己的变体),它们都有自己的做事方式。如果您希望以任何特定顺序可靠地对文件进行排序,则必须对它们进行排序。

关于c++ - 什么决定了文件列出的顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14225544/

相关文章:

forms - Laravel:多个文件上传,Input::hasFile(key) 始终为 false

C++ 用空格和逗号分隔字符串

c# - File.WriteAllLines 静默失败

c - 如何在读取文件时分配链表节点

c++ - 有趣的范围问题,解释?

c++ - 覆盖虚函数协变返回类型(两个指针)

c++ - C++在内部声明变量时如何生成随机地址?为什么它不线性存储它们?

c++ - MSVC++ 2013 中的资源

c++ - Long double 没有提供所需的精度

javascript - 无法将订阅的可观察对象作为字符串放入集合中