注:为什么要说目录文件?其实在linux中目录也是一种文件,只是它的内容是上级的目录和当前目录下的文件信息等,详情可以看看相关深入的书籍
opendir(打开目录)
|
相关函数
|
open,readdir,closedir,rewinddir,seekdir,telldir,scandir
|
表头文件
|
#include<sys/types.h> #include<dirent.h>
|
定义函数
|
DIR * opendir(const char * name);
|
函数说明
|
opendir()用来打开参数name指定的目录,并返回DIR*形态的目录流,和open()类似,接下来对目录的读取和搜索都要使用此返回值。
|
返回值
|
成功则返回DIR* 型态的目录流,打开失败则返回NULL。
|
错误代码
|
EACCESS 权限不足 EMFILE 已达到进程可同时打开的文件数上限。 ENFILE
已达到系统可同时打开的文件数上限。 ENOTDIR 参数name非真正的目录 ENOENT 参数name 指定的目录不存在,或是参数name
为一空字符串。 ENOMEM 核心内存不足。
|
相关函数
|
open,opendir,closedir,rewinddir,seekdir,telldir,scandir
|
表头文件
|
#include<sys/types.h> #include<dirent.h>
|
定义函数
|
struct dirent * readdir(DIR *
dir);
|
函数说明
|
readdir()返回参数dir目录流的下个目录进入点。 结构dirent定义如下 struct
dirent { ino_t d_ino; ff_t d_off; signed short int
d_reclen; unsigned char d_type; har d_name[256; }; d_ino
此目录进入点的inode d_off 目录文件开头至此目录进入点的位移 d_reclen _name的长度,不包含NULL字符 d_type
d_name 所指的文件类型 d_name 文件名
|
返回值
|
成功则返回下个目录进入点。有错误发生或读取到目录文件尾则返回NULL。
|
附加说明
|
EBADF参数dir为无效的目录流。
|
closedir(关闭目录)
|
相关函数
|
opendir
|
表头文件
|
#include<sys/types.h> #include<dirent.h>
|
定义函数
|
int closedir(DIR *dir);
|
函数说明
|
closedir()关闭参数dir所指的目录流。
|
返回值
|
关闭成功则返回0,失败返回-1,错误原因存于errno 中。
|
错误代码
|
EBADF 参数dir为无效的目录流
|
范例
|
参考readir()。
|
下面我们开发一个小程序,这个程序有一个参数.如果这个参数是一个文件名,我们输出这
个文件的大小和最后修改的时间,如果是一个目录我们输出这个目录下所有文件的大小和
修改时间.
#include <unistd.h>
#include <stdio.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <dirent.h>
#include <time.h>
static int get_file_size_time(const char *filename) {
struct stat statbuf;
if (stat(filename, &statbuf) == -1) {
printf("Get stat on %s Error:%s\n",
filename, strerror(errno));
return (-1);
}
if (S_ISDIR(statbuf.st_mode))return (1);
if (S_ISREG(statbuf.st_mode))
printf("%s size:%ld bytes\tmodified at %s",
filename, statbuf.st_size, ctime(&statbuf.st_mtime));
return (0);
}
int main(int argc, char **argv) {
DIR *dirp;
struct dirent *direntp;
int stats;
char buf[80];
if (argc != 2) {
printf("Usage:%s filename\n\a", argv[0]);
exit(1);
}
if (((stats = get_file_size_time(argv[1])) == 0) || (stats == -1))exit(1);
if ((dirp = opendir(argv[1])) == NULL) {
printf("Open Directory %s Error:%s\n",
argv[1], strerror(errno));
exit(1);
}
while ((direntp = readdir(dirp)) != NULL){
sprintf(buf,"%s/%s",argv[1],direntp->d_name);
if (get_file_size_time(buf) == -1)break;
}
closedir(dirp);
exit(1);
}
分享到:
相关推荐
相关函数是opendir -> readdir -> closedir 这样是不能遍历目录中的所有文件。 //LINUX下目录遍历搜索文件程序,支持嵌套目录 #include #include #include <sys/types.h> #include <dirent.h> #include ...
readdir,opendir,closedir详解
管理文件和目录之opendir和closedir目录
取得一个目录下的文件和子目录,就需要用到opendir()函数、readdir()函数、closedir()函数和rewinddir()函数。 ①函数opendir() 函数opendir()用于打开指定目录,接受一个目录的路径及目录名作为参数,函数返回值为...
实现功能:ls opendir readdir closedir ls -a opendir readdir closedir ls -l touch fopen fclose rm remove mkdir mkdir rmdir rmdir...
dirent.h:opendir()函数—打开目录函数,readdir()函数—读取目录函数,所需的头文件;dirent.h文件在压缩包的 include 目录中,examples目录中为一些使用示例。
linux C编程,读目录下所有的文件,选出 .jpg, .mp4的文件。之后再删除这些文件 #include #include <sys/stat.h> #include #include #include #include /* 列出 /tmp目录下所有的 .jpg 、mp4 文件 之后,再把...
1.ls opendir readdir closedir ls -a ls -l 2.touch open 3.rm remove 4.mkdir mkdir 5.rmdir rmdir 6.cd chidir 7.pwd getcwd 8.cp 标准IO ...
本文实例讲述了php中目录操作opendir()、readdir()及scandir()用法。分享给大家供大家参考,具体如下: opendir(path,context)若成功,则该函数返回一个目录流,否则返回 false 以及一个 error。可以通过在函数名前...
f_opendir - 打开一个目录 f_readdir - 读取目录条目 f_getfree - 获取空闲簇 Get Free Clusters f_stat - 获取文件状态 f_mkdir - 创建一个目录 f_unlink - 删除一个文件或目录 f_chmod - 改变属性(Attribute) f_...
本文档对linux、Unix文件操作进行了详细的介绍。包括其所用到的函数,及函数的一些区别,有程序例子。总之是学习linux高级编程的很好的资料!
//用来记录目录下的文件个数 $dirname='./'; //要遍历的目录名字 $dir_handle=opendir($dirname); ////打开目录取得目录句柄 ..... echo '<td>'.filetype($dirFile).'</td>';//类型 echo '<td>'.date("Y/...
操作系统实现cp命令是计算机科学领域中的一种基本操作,cp命令是Linux操作系统中的一种基本命令,用于复制文件或目录。下面我们将对操作系统实现cp命令的知识点进行总结。 实验目的 操作系统实现cp命令的实验目的...
php opendir()函数用于打开目录,通常与readdir()和closedir()函数一起用来读取目录下所有文件(即遍历目录),本文章向大家介绍php使用opendir()函数列出目录下所有文件的实例。 实例一: 使用opendir()列出目录下...
<div> make by: highlight in gnu/linux. 用法例子: highlight --inline-css --encoding=utf-8 yd.sh >yd.sh.htm<br/> <?php $dir = "src/"; //以"/"结尾。 echo "<a href='./'> 刷新 </a><br/>"; ...
通过C语言实现对指定目录的递归遍历,用到的结构类型函数包括:DIR、struct dirent、opendir、readdir、closedir
此程序利用opendir,readdir等接口函数,扫描指定目录,利用递归算法,打印出指定目录下的所有文件以及子目录所有的目录和文件。
一、目录操作 首先是从目录读取的函数,opendir(),readdir(),closedir(),使用的时候是先打开文件句柄,而后迭代列出: 复制代码 代码如下: <?php $base_dir=”filelist/”; $fso=opendir($base_dir); echo $base_dir...