0

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

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;
        }
    }
}

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

4

2 回答 2

4

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

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

于 2013-01-08T23:11:24.233 回答
1

真的没什么。它们按照在目录中的顺序列出。未指定;在实践中,它取决于目录中发生的事情的整个历史。

于 2013-01-08T23:04:16.260 回答