1.文件流指针与文件描述符的相互转化
1.1 fileno
fileno FILE* fp -> int fd fgets(,);
int fileno(FILE *stream);
功能:
获得一个文件流指针中的文件描述符
参数:
stream:文件流指针
返回值:
成功返回文件描述符
失败返回-1
1.2.fdopen
int fd -> FILE *fp
FILE *fdopen(int fd, const char *mode);
功能:
将文件描述符转化为文件流指针
参数:
fd:已经打开的文件描述符
mode:
"r"
"r+"
"w"
"w+"
"a"
"a+"
返回值:
成功返回文件流指针
失败返回NULL
1.3文件IO与标准IO的比较:
文件IO 用于底层设备相关的开发,但是
效率和安全性以及移植性没有标准IO方便。
如果是纯上层开发,优先选择使用标准IO 。
2.文件属性,目录
inode,name ls 123
1,打开目标目录
2.读取目录,,
3.关闭目录
目录 当文件看,只不过操作函数和操作文件函数不一样。
3.1 opendir
DIR *opendir(const char *name);
功能:
打开一个目录获得一个目录流指针
参数:
name:目录名
返回值:
成功返回目录流指针
失败返回NULL
3.2 readdir
struct dirent *readdir(DIR *dirp);
功能:
从目录流中读取文件信息并将保存信息的结构体
地址返回
参数:
dirp:目录流指针
返回值:
包含文件信息的结构体
出错或者读到目录流末尾返回NULL
3.3 closedir 关闭目录
int closedir(DIR *dirp);
功能:关闭之前已经打开的目录流对象
参数:opendir的返回结果中目录流对象
返回值:成功 0
失败 -1;
3.4.chdir cd
chdir ("/home/linux"); "../../"
fopen("1.mp4")
int chdir(const char *path);// /home/linux
功能:
改变当前程序的工作路径
参数:
path:改变到的路径
返回值:
成功返回0
失败返回-1
3.5.getcwd //pwd
char *getcwd(char *buf, size_t size);
功能:
获得当前的工作路径
参数:
buf:保存工作路径空间的首地址
size:保存路径空间的长度
返回值:
成功返回包含路径空间的字符串首地址
失败返回NULL
3.6 mkdir
int a =200;
int mkdir(const char *pathname, mode_t mode);//777 666 --x--x--x
功能:
创建一个目录
666-
参数:
pathname:路径
mode:
mode & ~umask 0002
返回值:
成功返回0
失败返回-1
3.7rmdir
rm -fr rmdir
int rmdir(const char *pathname);
功能:
删除一个空目录文件
参数:
pathname:目录文件的名字
返回值:
成功返回0
失败返回-1
ls ll
文件属性的获取
struct stat st;
struct stat*st ;
1.stat
int stat(const char *path, struct stat *buf);
功能:
获得文件的属性
参数:
path: 文件的路径
buf: 属性存放空间的首地址
返回值:
成功返回0
失败返回-1