目录操作

当目标是目录而不是文件的时候,ls -l的结果会显示目录下所有子条目的信息,怎么去遍历整个目录呢?答案马上揭晓!

1. 打开目录

功能:opendir()用来打开参数name指定的目录,并返回DIR *形态的目录流

需要包含的头文件:<sys/types.h>,<dirent.h>

函数原型:

  DIR * opendir(const char * name);

参数:

  name:要打开的目录完全路径名

返回值:

  成功返回目录流;  失败返回NULL


2. 读取目录

功能:readdir()返回参数dir目录流的下一个子条目(子目录或子文件)

函数原型:

  struct dirent * readdir(DIR * dir);

参数:

  dir:目录流

返回值:

  成功返回结构体指向的指针,错误或以读完目录,返回NULL

函数执行成功返回的结构体原型如下:

1 struct dirent {
2 ino_t d_ino;
3 off_t d_off;
4 unsigned short d_reclen;
5 unsigned char d_type;
6 char d_name[256];
7 };

其中 d_name字段,是存放子条目的名称


3. 关闭目录

功能:closedir()关闭dir所指的目录流

函数原型:

  int closedir(DIR * dir);

参数:

  dir:目录流

返回值:

  成功返回0;失败返回-1,错误原因在errno中


综合的例子:

 1 #include
2 #include
3 #include
4 int main(int argc, char *argv[])
5 {
6 DIR *dp;
7 struct dirent *entp;
8 if (argc != 2) {
9 printf("usage: showdir dirname\n");
10 exit(0);
11 }
12 if ((dp = opendir(argv[1])) == NULL) {
13 perror("opendir");
14 exit(-1);
15 }
16 while ((entp = readdir(dp)) != NULL)
17 printf("%s\n", entp->d_name);
18
19 closedir(dp);
20 return 0;
21 }

oendir(),readdir(),closedir() 打开/读取/关闭目录的更多相关文章

  1. 利用目录函数(opendir,readdir,closedir)查找文件个数

    如何知道一个目录下的所有文件个数呢?或许可以用tree来学(zhuang)习(bi)的同时知道文件个数.Linux系统io函数为我们提供了目录操作函数,其中有一个比较重要(实际上有三个,因为它们经常配 ...

  2. Linux C 文件与目录2 文件的打开与关闭

    文件的打开与关闭 open和close 文件的打开指的是从磁盘中找到一个文件,返回一个整形的打开文件顺序的编号.打开的文件处于可读.可写状态.文件的关闭指的是释放打开的文件,是文件处于不可读写的状态. ...

  3. C语言readdir()函数:读取目录函数

    相关函数:open, opendir, closedir, rewinddir, seekdir, telldir, scandir 头文件:#include <sys/types.h> ...

  4. iOS-OC-APP热更新,动态更新(仿QQ打开或关闭某个功能)

    一.前言 iOS开发更新APP我觉得是比较坑的就是审核时间比较长,审核比较严,对于刚入行的小伙伴来说,雷区比较多:所以热更新是比较重要的: 大家也许会发现我们常用的QQ现在下来也就一百多兆,但是用了几 ...

  5. QLGame 2d Engine Android端环境搭建(通过jni读取assets目录的文件)

    QLGame 2d Engine win端已经实现了一个动物的动画了,初步的东西已经完成,考虑在Android端也实现这些基本的东西,这样跨平台的引擎也就实现了! 要在Android下编程,首先要实现 ...

  6. [转]读取assets目录下的数据库文件

    在做Android应用的时候,不可避免要用到数据库.但是当我们把应用的apk部署到真机上的时候,已经创建好的数据库及其里边的数据是不能随着apk一起安装到真机上的. (PS:这篇博客解决了我前面博客中 ...

  7. VB Open 函数详解 打开、关闭、读、写文件

    (一)打开和关闭文件      1.顺序文件     打开顺序文件,我们可以使用Open语句.它的格式如下:Open pathname For [Input |Output |Append] As [ ...

  8. C++学习47 文件的概念 文件流类与文件流对象 文件的打开与关闭

    迄今为止,我们讨论的输入输出是以系统指定的标准设备(输入设备为键盘,输出设备为显示器)为对象的.在实际应用中,常以磁盘文件作为对象.即从磁盘文件读取数据,将数据输出到磁盘文件.磁盘是计算机的外部存储器 ...

  9. Linux C编程--打开和关闭流

    以下函数用于打开和关闭一个流.#include <stdio.h>FILE * fopen (const char *pathname, const char *opentype);int ...

随机推荐

  1. 内容提供者 ContentResolver 数据库 示例 -2

    MainActivity public class MainActivity extends ListActivity {     // 访问内容提供者时需要的主机名称     public stat ...

  2. java下socket传文件

    package cn.stat.p4.ipdemo; import java.io.BufferedReader; import java.io.BufferedWriter; import java ...

  3. php多文本框提交

    <form action="" method="post"><input type=text name=name[]><input ...

  4. angularjs中关于ng-if的一些理论

    ng-if简介: ● 使用ng-if指令可以完全根据表达式的值在DOM中生成或移除一个元素.如果赋值给ng-if 的表达式的值是false,那对应的元素将会从DOM中移除,否则对应元素的一个克隆将被重 ...

  5. HTML&CSS基础学习笔记1.26-input重置表单

    重置表单 <input>的[type]属性值为"button"的时候表示一个普通的按钮,相当于一个<button>标签. <input>的[ty ...

  6. Android系统服务-简介

    http://blog.csdn.net/chenyafei617/article/details/6577907 Introduction 我们知道Android系统服务挺多的,做程序时经常会用到, ...

  7. 页面正在载入js

    页面显示(pageshow)和页面隐藏(pagehide)事件 http://blog.163.com/jiang_tao_2010/blog/static/121126890200911403336 ...

  8. ural 1017. Staircases

    http://acm.timus.ru/problem.aspx?space=1&num=1017 #include <cstdio> #include <cstring&g ...

  9. 递归转手工栈处理的一般式[C语言]

    是任意形式的递归,是化解的一般式. 主题所谓的“递归调用化解为栈处理”,意思是,将递归函数调用化解为“一个由stack_push stack_pop stack_top等函数调用组成的循环式子”.这里 ...

  10. 管理TEMP数据

    SQL> select * from v$mystat where rownum<2; SID STATISTIC# VALUE ---------- ---------- ------- ...