Linuxの下にCのディレクトリの言語習得におけるファイルのリスト
カテゴリー:プログラミング言語
コードは以下の通りである:、Linuxの下での使用のGCC コンパイラ缶
書式#include <SYS / types.h>に
書式#include <dirent.h>
書式#include <unistd.h>
書式#include <stdio.hに>
INTメイン(){
DIR * DIR。
構造体のdirent * ptrは、
DIR =のopendir( "/ホーム/ zhangyang /関数kmeans");
しばらく((PTR =のreaddir(DIR))!= NULL)
printf( "d_name:%sの\ n" は、ptr-> d_name);
closedirの(DIR)。
0を返します。
}
注:仮定のディレクトリを読み取るには、複数のファイルがあり、ファイル名は次のとおりです。 1.bin、2.bin、3.bin、..... 99.bin など
:シーケンスプログラムを読み込むことは、そのようなことである 1.bin、10.bin、11.bin、... 19.bin、2.bin、
20.bの、...、29.b、99.bの....
むしろ私たちが期待したものよりも 1.bin、2.bin、3.bin、..... 99.bin ための読み取りがファイル名に関連付けられている目に見えるファイルであり、
フォルダまたはファイルかどうかを判断するには、次のコードを使用することができます。
STAT情報をストラクト。
STAT(パス、および情報)。
もし(S_ISDIR(info.st_mode))
printfの(「これはディレクトリです」);
stat 構造およびドメイン次のように:
構造体STAT {
dev_t st_devフィールド; / *ファイルを含むデバイスのID * /
ino_t st_inoの; / * inode番号* /
mode_tのst_mode; / *保護* /
nlink_t st_nlink; / *ハードリンクの数* /
uid_t型はST_UID。所有者の/ *ユーザID * /
gid_tのはst_gid。所有者の/ *グループID * /
dev_t st_rdevに、/ *デバイスID(特殊ファイルの場合)* /
st_size off_tでは、/ *合計サイズ(バイト単位)* /
blksize_t st_blocksizeは、/ *ファイルシステムのブロックサイズI / O * /
blkcnt_t st_blocks; / *割り当てられたブロックの数* /
time_tのst_atimeを; / *最後のアクセスの時間* /
time_tのst_mtimeの両; / *最後に変更された時間* /
time_tのファイルのst_ctime; / *最後のステータス変更の時間* /
}。
次のPosix 検出するためのマクロのst_modeのファイル・タイプ・フィールド:
S_ISREG()通常のファイル?
S_ISDIR()ディレクトリ?
S_ISCHR()キャラクタデバイス?
S_ISBLK()ブロックデバイス?
S_ISFIFO()FIFO(名前付きパイプ)?
S_ISLNK()シンボリックリンク?
S_ISSOCK()ソケット?
注:コード opendirなどの機能とREADDIR 機能次のように
opendir (オープンディレクトリ)
相関関数
オープン、readdir関数、closedirの、rewinddir 、seekdir 、telldir 、SCANDIR
ヘッダファイル
書式#include <SYS / types.h>に
書式#include <dirent.h>
定義関数
DIR * opendir関数(のconstのchar *名)。
機能説明
opendir()パラメータ開くため名前はディレクトリを指定し、そして返しDIR *はディレクトリストリームの態様、およびオープン()同様に、次のディレクトリを読み出し、リターンにこの値を検索します。
返却値
成功は、リターン DIR * パターンのディレクトリストリーム、オープンは返すために失敗したNULLを。
エラーコード
EACCESS 不十分なアクセス許可
EMFILEは、プロセスが同時にオープンできるファイルの最大数に達しました。
ENFILEは、ファイルシステムの最大数を同時に開くことができる達しました。
ENOTDIR パラメータ名は真のディレクトリではありません
ENOENT パラメータ名指定したディレクトリが存在しない場合、またはパラメータ名は、空の文字列です。
ENOMEM メモリのうちコア。
readdir (読みディレクトリ)
相関関数
オープン、opendir関数、closedirの、rewinddir 、seekdir 、telldir 、SCANDIR
ヘッダファイル
書式#include <SYS / types.h>に
書式#include <dirent.h>
定義関数
構造体のdirent *のreaddir(DIR * DIR);
機能説明
readdir()は、パラメータを返しDIR ストリームディレクトリの次のディレクトリエントリ・ポイントを。
構造はdirent 次のように定義されます
構造体は言いました
{
ino_t d_ino;
ff_t d_off;
d_reclen short int型に署名しました。
unsigned char型のd_type;
HAR d_name [256]。
}。
d_ino このディレクトリエントリポイントのinode
d_off 変位ポイントにこのディレクトリへのディレクトリのファイルの先頭
d_reclenの_nameの長さは、含まれているNULLの文字を
d_typeのd_name ファイルタイプの意義の範囲内
d_name ファイル名
返却値
次のディレクトリエントリ・ポイントの成功が返されます。エラーが発生したか、またはカタログファイルを返すの最後まで読み取られた NULL 。
追加情報
EBADF パラメータdirが有効なディレクトリ・ストリームではありません