可以使用以下函数来进行文件夹操作
opendir(3)
#include<sys/types.h>
#include<dirent.h>
DIR *opendir(const char *name);
功能:打开一个
参数:
name:指定了要打开的文件夹的名字
返回值:
错误:NULL,errno被设置
成功:返回一个具体的地址
//DIR 结构 struct __dirstream { void *__fd; /* `struct hurd_fd' pointer for descriptor. */ char *__data; /* Directory block. */ int __entry_data; /* Entry number `__data' corresponds to. */ char *__ptr; /* Current pointer into the block. */ int __entry_ptr; /* Entry number `__ptr' corresponds to. */ size_t __allocation; /* Space allocated for the block. */ size_t __size; /* Total valid data in the block. */ __libc_lock_define (, __lock) /* Mutex lock for this structure. */ }; typedef struct __dirstream DIR;
closedir(3)
#include<sys/types.h>
#include<dirent.h>
int *closedir(DIR *dirp);
功能:
关闭一个文件夹
参数:
dirp:指定了要关闭的文件夹(opendir(3)的返回值)
返回值:
错误:-1,errno被设置
成功:0
readdir(3)
struct dirent *readdir(DIR *dirp);
功能:
读取文件夹的内容。
参数:
dirp:指定文件夹。opendir(3)的返回值
返回值:
NULL 到达文件末尾或错误产生,如果是错误产生,则errno被设置
成功:返回一个结构体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字符 */ }
另外还有类似文件的操作函数:
rewinddir(3):将指针定位到首位置
seeldir(3):设置参数dir目录流目前的读取位置
telldir(3):返回值记录着一个目录流的当前位置
scandir(3):扫描dir目录下(不包括子目录)满足filter过滤模式的文件,返回的结果是compare函数经过排序的,并保存在namelist中
...
文件夹包含什么?
文件夹的所包含的就是文件夹下所有的内容。
文件夹的元数据。
使用ls命令查看文件或文件夹的元数据。
相对于文件,在文件中权限x代表可执行,文件夹中x代表通过,例如,使用cd命令的场合,如果文件夹没有x权限,那么cd命令将报错。
给test文件夹加上x权限后,去除其w权限,再cd进去,创建文件将报错