Linux文件夹操作

可以使用以下函数来进行文件夹操作

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进去,创建文件将报错

原文地址:https://www.cnblogs.com/ptfe/p/10965397.html