Unix C学习之文件夹操作

mac2024-11-20  3

文件夹的内容:文件夹的内容就是文件夹里的文件或文件夹

文件夹的权限:r读 w写 x可通过

DIR *opendir(const char *name); #include <sys/types.h> #include <dirent.h> 功能:打开一个文件夹 参数: name 指定要打开的文件夹的名字 返回值:错误 NULL errno被设置 成功 返回一个指向文件夹流的指针

int closedir(DIR *dirp); #include <sys/types.h> #include <dirent.h> 功能:关闭文件夹流 参数: dirp 指定文件夹流 也就是要关闭的文件夹流 返回值:成功 0 错误 -1 errno被设置

struct dirent * readdir(DIR *dirp); #include <dirent.h> 功能:从文件夹流中读取一条信息 参数: dirp 指定了文件夹流 返回值: NULL 到达文件夹的末尾或者错误发生 如果是错误发生 errno被设置 结构体说明

struct dirent { ino_t d_ino; /* inode number */ off_t d_off; /* not an offset; see NOTES */ unsigned short d_reclen; /* length of this record */ unsigned char d_type; /* type of file; not supported by all filesystem types */ char d_name[256]; /* filename */ }; #ifndef __T_STDIO_H__ #define __T_STDIO_H__ #include <stdio.h> #define E_MSG(STR,VAL) do{\ perror(STR);\ return (VAL);\ }while(0) #endif #include <t_stdio.h> #include <sys/types.h> #include <dirent.h> #include <errno.h> int main(int argc, char *argv[]){ //打开文件夹 DIR *dir = opendir(argv[1]); if(!dir) E_MSG("opendir", -1); printf("opendir success... \n"); //从文件夹流中读取一条信息 struct dirent *item = NULL; while((item=readdir(dir))){ printf("filename:%s\tinode:%lu\n", item->d_name, item->d_ino); } //关闭文件夹流 closedir(dir); return 0; }
最新回复(0)