更多资料请点击:我的目录
一、struct dirent
1、包含头文件
#include <dirent.h>
2、struct dirent 结构
struct dirent
{
long d_ino; /* inode number 索引节点号 */
off_t d_off; /* offset to this dirent 在目录文件中的偏移 */
unsigned short d_reclen; /* length of this d_name 文件名长 */
unsigned char d_type; /* the type of d_name 文件类型 */
char d_name [NAME_MAX+1]; /* file name (null-terminated) 文件名,最长255字符 */
}
使用:
DIR *dp = opendir(src); //打开目录src,并拷贝到(DIR定义)目录dp
struct dirent *dirp; //dirp指向结构dirent(dirp命名自定义)
dirp = readdir(dp); //返回参数dp目录流的下个目录进入点
dirp -> d_name; //通过dirp 指向(->)文件名(d_name),从而获取dp/src的文件名
获取属性时通过“->”实现: dirp -> d_name / dirp -> d_type / dirp -> d_reclen
-------------------------------------------分割线-------------------------------------------------
二、struct stat
1、需要包含de头文件
#include <sys/types.h>
#include <sys/stat.h>
2、struct stat 结构
struct stat
{
dev_t st_dev; /* ID of device containing file -文件所在设备的ID*/
ino_t st_ino; /* inode number -inode节点号*/
mode_t st_mode; /* protection -保护模式?*/
nlink_t st_nlink; /* number of hard links -链向此文件的连接数(硬连接)*/
uid_t st_uid; /* user ID of owner -user id*/
gid_t st_gid; /* group ID of owner - group id*/
dev_t st_rdev; /* device ID (if special file) -设备号,针对设备文件*/
off_t st_size; /* total size, in bytes -文件大小,字节为单位*/
blksize_t st_blksize; /* blocksize for filesystem I/O -系统块的大小*/
blkcnt_t st_blocks; /* number of blocks allocated -文件所占块数*/
time_t st_atime; /* time of last access -上次存取时间*/
time_t st_mtime; /* time of last modification -上次修改时间*/
time_t st_ctime; /* time of last status change - 创建时间*/
};
3、我们使用最多的属性是st_mode.通过着属性我们可以判断给定的文件是一个普通文件还是一个目录,连接等等.可以使用下面几个宏来判断:
S_ISLNK(st_mode)是否是一个连接.
S_ISREG(st_mode)是否是一个常规文件.
S_ISDIR(st_mode)是否是一个目录
S_ISCHR(st_mode)是否是一个字符设备.
S_ISBLK(st_mode)是否是一个块设备
S_ISFIFO(st_mode)是否是一个FIFO文件.
S_ISSOCK(st_mode)是否是一个SOCKET文件.
使用:
struct stat info; //info指向结构stat(info命名自定义)
bzero(&info, sizeof(info)); //初始化为0
stat(argv[1], &info); //函数 stat,用来获取文件argv[1]的属性
if(S_ISREG(info.st_mode)) // 判断文件的类型
获取属性时通过“.”实现: info.st_mode / info.st_size / info.st_ctime
扫描二维码关注公众号,回复:
9210990 查看本文章
更多资料请点击:我的目录