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 の場合、少なくとも半ダースあり、名前で言及していないほとんどすべての OS には独自のバリエーションがあります)、それらはすべて独自のやり方を持っています。ファイルを特定の順序で確実に並べ替えたい場合は、ファイルを並べ替える必要があります。

于 2013-01-08T23:11:24.233 に答える
1

本当に何もありません。これらは、ディレクトリ内で見つかった順序でリストされています。どちらが指定されていません。実際には、ディレクトリで発生したことの履歴全体に依存します。

于 2013-01-08T23:04:16.260 に答える