linux 查看目录下是否有空文件夹,linux下c++判断文件夹空,DIR,dirent,stat等结构体详解...

关于三个结构体的定义:

http://www.liweifan.com/2012/05/13/linux-system-function-files-operation/

DIR结构体的定义:

struct __dirstream

{

void *__fd;

char *__data;

int __entry_data;

char *__ptr;

int __entry_ptr;

size_t __allocation;

size_t __size;

__libc_lock_define (, __lock)

};

typedef struct __dirstream DIR;

dirent不仅仅指向目录,还指向目录中的具体文件,readdir函数同样也读取目录下的文件,这就是证据。以下为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字符 */

}

通过readdir函数读取到的文件名存储在结构体dirent的d_name成员中,而函数

int stat(const char *file_name, struct stat *buf);

的作用就是获取文件名为d_name的文件的详细信息,存储在stat结构体中。以下为stat结构体的定义:

struct stat {

mode_t st_mode; //文件访问权限

ino_t st_ino; //索引节点号

dev_t st_dev; //文件使用的设备号

dev_t st_rdev; //设备文件的设备号

nlink_t st_nlink; //文件的硬连接数

uid_t st_uid; //所有者用户识别号

gid_t st_gid; //组识别号

off_t st_size; //以字节为单位的文件容量

time_t st_atime; //最后一次访问该文件的时间

time_t st_mtime; //最后一次修改该文件的时间

time_t st_ctime; //最后一次改变该文件状态的时间

blksize_t st_blksize; //包含该文件的磁盘块的大小

blkcnt_t st_blocks; //该文件所占的磁盘块

};

#include

#include

#include

using namespace std;

int main(int argc , char **argv)

{

DIR *dirp;

int num=0;

dirp = opendir(argv[1]);

while(dirp) {

if(readdir(dirp) != NULL)

++num;

else

break;

}

closedir(dirp);

cout<

}

建立一个空文件夹,输出问2,其中包含 .  和 ..两个文件

touch一个空文件,输出为3.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值