1. 对目录文件的操作包括创建、打开、定位和删除等内容, 其中
(1) 获取工作目录的函数有getcwd和getwd等。
(2) 设置工作目录的函数有chdir和fchdir等。
(3) 创建目录文件的函数有mkdir等。
(4) 删除目录文件的函数有rmdir等。
(5) 目录文件定位的函数有seekdir、rewinddir和telldir等。
2. 代码实例。
2.1 读取工作目录(绝对路径)
char *getcwd(char *buf, size_t size);
char *getwd(char *pathname);
/************实例***************/
#include <unistd.h>
#include<stdio.h>
int main()
{
char buf[255];
fprintf(stderr, “pwd = [%s]/n”, getcwd(buf, sizeof(buf));
chdir(“../”);
fprintf(stderr, “pwd = [%s]/n”, getcwd(buf, sizeof(buf));
return 0;
}
2.2 目录的创建与删除
int mkdir(const char *path, mode_t mode);
int rmdir(char *path);
PS:目录的访问权限由参数mode与操作系统umask值共同确定,公式为:
mode & (~mask)
/***********创建目录************/
#include <unistd.h>
#include <stdio.h>
int main(int argc, char *argv[])
{
if(argc != 2)
return -1;
fprintf(stderr, “create dir [%s] respcode=[%d]/n”, argv[1], mkdir(argv[1]));
}
/***********删除目录************/
#include <unistd.h>
#include <stdio.h>
int main(int argc, char *argv[])
{
if(argc != 2)
return -1;
fprintf(stderr, “delete dir [%s] respcode=[%d]/n”, argv[1], rmdir(argv[1]));
}
2.3 目录的读取
DIR *opendir(const char *dirname);
struct dirent *readdir(DIR *dirp);
int closedir(DIR *dirp);
/***********列目录*************/
#include <stdio.h>
#include <dirent.h>
int main(int argc, char *argv[])
{
DIR *pdir;
struct dirent *pent;
if(argc != 2)
return -1;
if((pdir = opendir(argv[1])) == NULL)
{
fprintf(stderr, “open dir failed./n”);
return -1;
}
while(1)
{
pent = readdir(pdir);
if(pent == NULL)
break;
fprintf(stderr, “%5d %s/n”, pent->d_ino, pent->d_name);
}
closedir(pdir);
}
2.4 目录的定位
void seekdir(DIR *dirp, long int loc);
void rewinddir(DIR *dirp);
long int telldir(DIR *dirp);
/************目录定位使用模板****************/
long int l;
DIR *dirp;
…………….
l = telldir(dirp);
………………
seekdir(dirp, l);
…………………
函数rewinddir重置目录流到开始位置等价于语句
seekdir(dirp, 0);