Linux C/C++ ----目录文件的操作(opendir,readdir,closedir)
来源:互联网 发布:deepin linux 假死 编辑:程序博客网 时间:2024/05/22 01:28
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 核心内存不足。
readdir(读取目录)
相关函数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);
- }
-
0 0
- Linux C/C++ ----目录文件的操作(opendir,readdir,closedir)
- linux c下目录文件的操作(opendir,readdir,closedir)
- linux c学习笔记----目录文件的操作(opendir,readdir,closedir)
- linux 目录操作函数opendir readdir closedir,文件stat
- linux C 遍历目录及其子目录 opendir -> readdir -> closedir
- linux C 遍历目录及其子目录 opendir -> readdir -> closedir
- linux C 遍历目录及其子目录 opendir -> readdir -> closedir .
- Linux下面用c语言遍历目录opendir -> readdir -> closedir
- Linux下面用c语言遍历目录opendir -> readdir -> closedir
- linux C 遍历目录及其子目录 opendir -> readdir -> closedir
- Linux目录操作函数:opendir/readdir/closedir
- Linux下目录文件的操作(opendir,readdir,closedir) 以及DIR,dirent,stat等结构体详解
- perl中目录句柄的操作(opendir, readdir, closedir)
- linux C 遍历目录及其子目录 opendir -> readdir -> closedir http://blog.csdn.net/angle_birds/article/details/
- Linux 文件操作函数 opendir()、readdir()、closedir()、stat()
- 文件操作opendir()/readdir()/closedir()/stat()
- 文件操作opendir()/readdir()/closedir()/stat()
- 文件操作opendir()/readdir()/closedir()/stat() .
- 在windows上运行Spark Driver
- eclipse 使用Maven deploy命令部署构建到Nexus上 【二】
- 系统之家U盘启动工具v5.0 - 制作U盘启动盘教程
- C语言index()函数:查找字符串并返回首次出现的位置
- 反射(一)
- Linux C/C++ ----目录文件的操作(opendir,readdir,closedir)
- poj 2546 Circular Area 两圆面积交
- IE10 以下版本完美支持 placeholder 特性
- VS2010版快捷键
- (转载)linux命令之四十六lsof命令
- android系统中间件移植-3G4G通信模块适配
- 图像处理和识别中常用的Opencv函数
- WCF---TCP 错误代码 10061: 由于目标计算机积极拒绝,无法连接
- android 杀死进程