重点
1.opendir
DIR *opendir(const char *name);
DIR *目录流指针
功能:
打开一个目录获得一个目录流指针
参数:
name:目录名
返回值:
成功返回目录流指针
失败返回NULL
2.readdir
struct dirent *readdir(DIR *dirp);
功能:
从目录流中读取文件信息并将保存信息的结构体
地址返回
参数:
dirp:目录流指针
返回值:
包含文件信息的结构体
出错或者读到目录流末尾返回NULL
linux中以.开头的都是隐藏文件
3、关闭目录
int closedir(DIR *dirp);
功能:关闭之前已经打开的目录流对象
参数:opendir的返回结果中目录流对象
返回值:成功 0
失败 -1;
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <dirent.h>
int main(int argc, char *argv[])
{
DIR * dir = opendir("./");
if(NULL == dir)
{
fprintf(stderr,"opendir errpr\n");
return 1;
}
while(1)
{
struct dirent * info = readdir(dir);
if(NULL == info)
{
break;
}
switch(info->d_type)
{
case DT_DIR:
printf("目录文件 ");
break;
case DT_REG:
printf("普通文件 ");
break;
case DT_UNKNOWN:
printf("其他文件 ");
break;
default:
printf("未知文件 ");
}
printf("%s\n",info->d_name);
}
closedir(dir);
return 0;
}
3.chdir cd
chdir ("/home/linux"); "../../"
fopen("1.mp4")
int chdir(const char *path);// /home/linux
功能:
改变当前程序的工作路径
参数:
path:改变到的路径
返回值:
成功返回0
失败返回-1
#include <stdio.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
int ret = chdir("..");
if(-1 == ret)
{
fprintf(stderr,"chdir error\n");
return 1;
}
fopen("aaa","w");
return 0;
}
4.getcwd //pwd
char *getcwd(char *buf, size_t size);
功能:
获得当前的工作路径
参数:
buf:保存工作路径空间的首地址
size:保存路径空间的长度
返回值:
成功返回包含路径空间的字符串首地址
失败返回NULL
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
char buf[256]={0};
getcwd(buf,sizeof(buf));
printf("current path is %s\n",buf);
chdir("../");
getcwd(buf,sizeof(buf));
printf("change path is %s\n",buf);
return 0;
}
5.mkdir
int a =200;
int mkdir(const char *pathname, mode_t mode);//777 666 --x--x--x
(新建文件和目录时系统自动把权限减umask 0002)
功能:
创建一个目录
666-
参数:
pathname:路径
mode:
mode & ~umask 0002
返回值:
成功返回0
失败返回-1
#include <stdio.h>
#include <unistd.h>
#include <sys/stat.h>
#include <sys/types.h>
int main(int argc, char *argv[])
{
int ret = mkdir("aaa",0777);
if(-1 == ret)
{
fprintf(stderr,"mkdir error\n");
return 1;
}
return 0;
}
6.rmdir rm -fr rmdir
int rmdir(const char *pathname);
功能:
删除一个空目录文件
参数:
pathname:目录文件的名字
返回值:
成功返回0
失败返回-1
#include <stdio.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
int ret = rmdir("./aaa");
if(-1 == ret)
{
fprintf(stderr,"rmdir error\n");
return 1;
}
return 0;
}
重点:
1.stat
int stat(const char *path, struct stat *buf);
功能:
获得文件的属性
参数:
path: 文件的路径
buf: 属性存放空间的首地址
返回值:
成功返回0
失败返回-1
man 7 inode(查关于mode的计算,文件类型,文件权限)
实现ll命令功能
1.获取秒数
2.转换为需要个格式
系统时间的获取:
1.time
time_t time(time_t *t);
time_t tm;
time(&tm)
tm = time(NULL);
功能:
获得1970年到现在的秒数
参数:
t:存放秒数的空间首地址
返回值:
成功返回1970年到现在的秒数
失败返回-1
2.localtime
struct tm *localtime(const time_t *timep);
年+1900,月+1;
功能:
将一个秒数转化成日历时间
参数:
timep:保存秒数空间的地址
返回值:
成功返回保存日历时间结构体的指针
失败返回NULL
3.ctime
char *ctime(const time_t *timep);//date
功能:
将时间秒数转化成字符串
参数:
timep:保存时间空间的地址
返回值:
成功返回获得时间字符串的首地址
失败返回NULL