1. 打开/关闭文件

1). 打开目录 / opendir

  • 作用

    打开一个目录,将其与目录流联系起来,方便后续的操作

  • 头文件

      #include <dirent.h>
  • 函数原型

      DIR *opendir(const char *name)
  • 参数

name: 欲打开的目录名(可包含路径)

DIR为一个结构体:

typedef struct __dirstream DIR

对用户透明,无需关系其内容

  • 返回值

    成功:返回目录流

    失败:返回 NULL

    错误码:见errno

  • 相似函数

      FILE *fdopendir(int fd, const char *mode)  //通过目录描述符打开文件

2). 关闭文件 / fclose

  • 作用

    关闭一个已经打开的目录

  • 头文件

      #include <dirent.h>
  • 函数原型

      int closedir(DIR *dirp)
  • 参数

  • dirp: 打开目录时候返回的流指针(DIR *)
  • 返回值

    成功:0

    失败:-1

2. 读/写目录流

1). 目录流-读 / readdir & readdir_r

①. readdir

  • 作用

    读取目录流信息

  • 头文件

      #include <dirent.h>
  • 函数原型

      struct dirent *readdir(DIR *dirp)
  • 参数

  • dirp: 目录流

  • struct dirent:

       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 file system types */
    char d_name[256]; /* filename */
    };

d_type的宏定义:

Macro Description
DT_BLK This is a block device
DT_CHR This is a character device
DT_DIR This is a directory
DT_FIFO This is a named pipe (FIFO)
DT_LNK This is a symbolic link
DT_REG This is a regular file
DT_SOCK This is a UNIX domain socket
DT_UNKNOWN The file type is unknown
If the file type could not be determined, the value DT_UNKNOWN is returned in d_type.
  • 返回值

    成功:dirent结构体指针

    失败:NULL

②. readdir_r

  • 作用

    读取目录流信息(多线程安全)

  • 头文件

       #include <dirent.h>
  • 函数原型

      int readdir_r(DIR *dirp, struct dirent *entry, struct dirent **result)
  • 参数

  • dirp: 打开的目录流
  • entry:
  • result: 读取到的信息存储到该缓存中返回
  • 返回值

    成功:0

    失败:-1

3. 目录流定位

1). telldir

  • 作用

    获取当前的读写位置

  • 头文件

      #include <dirent.h>
  • 函数原型

      long telldir(DIR *dirp)
  • 参数

dir: 目录流

  • 返回值

    成功:当前指针的位置

    失败:-1

2). seekdir

  • 作用

    修改当前的读写位置

  • 头文件

      #include <dirent.h>
  • 函数原型

      void seekdir(DIR *dirp, long loc)
  • 参数

  • dirp: 目录流
  • loc: 从telldir()获取的目录流位置
  • 返回值

    无返回值

3). rewinddir

  • 作用

    将目录流指针指向开始位置

  • 头文件

      #include <dirent.h>
  • 函数原型

      void rewinddir(DIR *dirp)
  • 参数

dirp: 目录流

  • 返回值

    无返回值

4. 添加/删除目录

1). mkdir

  • 作用

    创建一个新的目录

  • 头文件

      #include <sys/stat.h>
  • 函数原型

      int mkdir(const char *pathname, mode_t mode)
  • 参数

  • pathname: 创建的目录名

  • mode: 创建目录的访问权限

      mode = mode &  ~umask
  • 返回值

    成功:0

    失败:-1

2). mkdir

  • 作用

    删除一个目录

  • 头文件

      #include <unistd.h>
  • 函数原型

       int rmdir(const char *pathname)
  • 参数

  • pathname: 删除的目录名
  • 返回值

    成功:0

    失败:-1

5. 工作路径

1). 获取当前工作路径 / getcwd

  • 作用

    获取当前工作路径

  • 头文件

      #include <unistd.h>
  • 函数原型

      char *getcwd(char *buf, size_t size)
    char *getwd(char *buf)
    char *get_current_dir_name(void)
  • 参数

  • buf: 暂存现工作路径
  • size: buf的大小
  • 返回值

    成功:当前工作路径

    失败:NULL

2). 修改当前工作路径 / chdir

  • 作用

    修改当前工作路径

  • 头文件

      #include <unistd.h>
  • 函数原型

       int chdir(const char *path)
    int fchdir(int fd)
  • 参数

  • path: 目标工作路径
  • fd: dir描述符
  • 返回值

    成功:0

    失败:-1

Linux 目录流管理的更多相关文章

  1. Linux目录权限管理

    Linux目录权限管理   实验目标: 通过本实验掌握centos7/rhel7目录权限的管理.包括配置目录的所属组.SGID.读/写/执行权限等. 实验步骤: 1.创建目录/home/instruc ...

  2. Linux 文件流管理

    1. 打开/关闭文件 1). 打开文件 / fopen 作用: 打开一个文件,将其与文件流联系起来,方便后续的操作 头文件: #include <stdio.h> 函数原型: FILE * ...

  3. Linux档案与目录的管理

    本篇随笔中,主要介绍在Linux环境下,与档案和目录的管理相关的一些命令使用,具体包括如下几个方面: 目录的相关操作:cd,pwd,mkdir,rmdir(rm) 档案与目录的查视:ls 复制.删除与 ...

  4. Linux系统文件与目录权限管理

    Linux文件目录权限管理 一.Linux文件属性及权限 1.Linux文件及目录权限及属性说明 (1)权限及属性说明 (2)文件权限说明 三种权限说明:r 读  read w 写  write  x ...

  5. Linux下用户管理、目录结构

    linux的文件系统是采用层级式的树状目录结构,在此结构中的最上层是根目录“/”,然后在此目录下再创建其他的目录. 目录介绍: / root,存放root用户的相关文件 home,存放普通用户的相关文 ...

  6. Linux目录和文件——管理目录和文件的命令

    Linux目录和文件——管理目录和文件的命令 摘要:本文主要学习了Linux系统中关于目录和文件的操作. cd命令 cd命令用来切换工作目录,是Change Directory的缩写. 基本语法 cd ...

  7. linux档案和目录的管理

    资料来自鸟哥的linux私房菜,记录下来供自己平常使用参考 一:目录和路径: cd:change direcoty,变换目录的意思,就是从一个目录变到另一个目录,然后可以用绝对路径去变换目录,也可以用 ...

  8. Linux目录机构及目录管理

    Linux的目录结构与目录管理 Linux目录结构: 1 目录创建规则 FHS 文件系统层次化标准 指定Linux操作系统哪些目录必须具备 /boot /bin /sbin /etc /sys /pr ...

  9. linux 目录结构+常用命令+压缩命令+vim使用+及基础知识

    linux目录架构 / 根目录 /bin 常用的命令 binary file 的目录 /boot 存放系统启动时必须读取的档案,包括核心 (kernel) 在内 /boot/grub/menu.lst ...

随机推荐

  1. 如何统计TFS代码库中的团队项目所占用的磁盘空间

    在一个开发团队较多的研发中心,当开发人员的代码数据积累到一定程度,TFS系统的磁盘空间的使用率会逐渐成为系统管理员关注的问题.你可能会关注代码库中每个团队项目,甚至每个目录占用的的磁盘空间.不幸的,即 ...

  2. Alwayson--工作流程

    Alwayson的工作流程: 1. 在主副本上,用户提交数据修改事务,等待服务器返回成功表示: 2. 在主副本上,将事务日志固化(harden),SQL SERVER调用Logwriter线程将事务日 ...

  3. Linux系统发布ASP.NET项目

    一.安装配置Jexus服务 注:root权限下执行,Linux版本:CentOS-7 1.安装Jexus 5.8.1 "独立版"软件 该"独立版"支持64位的C ...

  4. .net4.0重新注册IIS 的方法

    操作步骤如下: 1.开始 2.运行 3.cmd 4.cd C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319 5.aspnet_regiis.exe -i

  5. ADO.NET系列之Connection对象

    ADO.NET系列之Connection对象 ADO.NET系列之Command对象 ADO.NET系列之DataAdapter对象 ADO.NET系列之事务和调用存储过程 ADO.NET概念 ADO ...

  6. Code First 更新数据库 记录

    每次都会忘记这个,所以记录一下 第一步:打开程序包管理控制台 第二步:启动迁移配置 第三步: 更新数据库的迁移的名称 因为设置了多个context,所以要指定更新的是哪一个库. 如果没有指定,会出现下 ...

  7. [C#]C#时间日期操作

    一.C# 日期格式 1. DateTime dt = DateTime.Now; 2. dt.ToString();//2005-11-5 13:21:25 3. dt.ToFileTime().To ...

  8. Windows Server 2012 R2部署--安装桌面体验

    Windows Server 2012 R2部署(3)---安装桌面体验 1) 打开服务器管理器 2) 选择所有服务器    3)添加角色和功能    4)下一步    5)下一步    6)下一步 ...

  9. 解决win10不显示coreldraw x4/5/6菜单栏

    1.下载插件 https://pan.baidu.com/s/1nQ1kgUNSD7-9sjUbv5M6XA 复制链接下载插件 2.导入插件到工作区 3.设置工具栏显示 4.把工具栏拖动到菜单栏位置, ...

  10. application/force-download 不生效

    不管用什么方式都无法下载txt 设置application/force-download也不生效 很无奈 胡搞瞎搞 最终解决方案:但是没搞明白什么原理 问题解决 @RequestMapping(val ...