readdir、wreaddir

提供: Appmethod Topics
移動先: 案内検索

dirent.h:インデックス への移動


ヘッダー ファイル

dirent.h

カテゴリ

ディレクトリ制御ルーチン

プロトタイプ

struct dirent *readdir(DIR *dirp);
struct wdirent *wreaddir(wDIR *dirp)

説明

ディレクトリ ストリームから現在のエントリを読み取ります。

readdir は POSIX 準拠の UNIX システムで使用できます。

readdir 関数は、dirp で参照されるディレクトリ ストリームから現在のディレクトリ エントリを読み取ります。 ディレクトリ ストリームは次のエントリに進みます。

readdir 関数は、dirent 構造体を指すポインタを返します。この構造体は、同じディレクトリ ストリームに対してこの関数を呼び出すたびに上書きされます。 別のディレクトリ ストリームに対して readdir を呼び出しても、この構造体は上書きされません。

dirent 構造体は単一のディレクトリ エントリに対応します。 この構造体は dirent.h に定義されており、(アクセスできない他のメンバに加えて)以下のメンバで構成されます。

char d_name[];

ここで、d_name は、現在のディレクトリ エントリの NULL 終端ファイル名が格納されている文字配列です。 配列のサイズは不定です。ファイル名の長さを特定するには、strlen を使用します。

サブディレクトリ、"."、".."、システム ファイル、隠しファイル、ボリューム ラベルなどの有効なディレクトリ エントリがすべて返されます。 未使用または削除済みのディレクトリ エントリはスキップされます。

ディレクトリ ストリームの読み取り中にディレクトリ エントリを作成または削除することができますが、それらのディレクトリ エントリを readdir が返すかどうかはわかりません。 ディレクトリを rewinddir で先頭に戻したり opendir で開き直すと、readdir は必ずディレクトリの現在の状態を反映するようになります。

wreaddir 関数は readdir の Unicode 版です。 これは wdirent 構造体を使用しますが、それ以外は readdir と同様です。

戻り値

正常終了した場合、readdir は、ディレクトリ ストリームの現在のディレクトリ エントリを指すポインタを返します。

ディレクトリの終わりに達した場合や、dirp が開いているディレクトリ ストリームを指していない場合、readdir は NULL を返します。

#include <dirent.h>
void print_dir(wchar_t* dir_name)
{
  /* Open the directory and check for success */
  wDIR* dir = wopendir(dir_name);
  wdirent* ent;

  if (!dir)
    return;

  /* Navigate in the directory stream */
  while (ent = wreaddir(dir))
  {
    /* print the name of the entry */
    printf("%ls\n", ent->d_name);
  }
}

移植性

POSIX Win32 ANSI C ANSI C++
readdir

+

+

wreaddir

+