上一节剩余内容:
fileno:
Fileno FILE* fp -> int fd fgets(,);
int fileno(FILE *stream);
功能:
获得一个文件流指针中的文件描述符
参数:
stream:文件流指针
返回值:
成功返回文件描述符
失败返回-1
2.fdopen int fd -> FILE *fp
FILE *fdopen(int fd, const char *mode);
功能:
将文件描述符转化为文件流指针
参数:
fd:已经打开的文件描述符
mode:
"r"
"r+"
"w"
"w+"
"a"
"a+"
返回值:
成功返回文件流指针
失败返回NULL
文件属性,目录 Dir:
目录操作:
打开目录目标
读取目录
关闭目录
目录:当文件看,只不过操作函数和操作文件函数不一样
相关函数:
1.opendir
DIR *opendir(const char *name);
功能:
打开一个目录获得一个目录流指针(代表目录整体)
参数:
name:目录名
返回值:
成功返回目录流指针
失败返回NULL
2.Readdir
info*:一项,目录中有很多项内容,info代表其中的一个
struct dirent *readdir(DIR *dirp);
结构体:
d_type:判断这个文件是七种中的哪一个
DT_BLK:块设备,存储类设备,读写硬盘的最小单位是512字节
DT_CHR:字符设备,键盘鼠标等,一个字符一个字符的读/写,字符与字符之间有顺序
DT_DIR:目录文件
DT_FIFO:pipe,管道
DT_LNK
DT_REG:普通文件
DT_SOCK
DT_UNKNOWN:未知文件
功能:
从目录流中读取文件信息并将保存信息的结构体地址返回
参数:
dirp:目录流指针
返回值:
包含文件信息的结构体
出错或者读到目录流末尾返回NULL
3、关闭目录
int closedir(DIR *dirp);
功能:
关闭之前已经打开的目录流对象
参数:
opendir的返回结果中目录流对象
返回值:
成功 0
失败 -1;
如果使用了一个结构体要查找这个结构体的成员,不能直接使用man 指令,而是应该用man 指令查找使用这个结构体的函数名
在Linux中,以.开头的文件是隐藏文件,.代表本层 ..代表上层
4、chdir cd
chdir ("/home/linux"); "../../"
fopen("1.mp4")
int chdir(const char *path);// /home/linux
功能:
改变当前程序的工作路径
参数:
path:改变到的路径
返回值:
成功返回0
失败返回-1
5、getcwd //pwd
char *getcwd(char *buf, size_t size);
功能:
获得当前的工作路径参数:
buf:保存工作路径空间的首地址
size:保存路径空间的长度
返回值:
成功返回包含路径空间的字符串首地址
失败返回NULL
5、mkdir
int a =200;
int mkdir(const char *pathname,mode_t mode);//777/666/--x--x--x
目录的默认权限是775
目录名区分大小写:重名的文件和目录不能在一个目录下同时存在
功能:
创建一个目录 666-
参数:
pathname:路径
mode:
mode & ~umask 0002
返回值:
成功返回0
失败返回-1
6.rmdir 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);
功能:
获得文件的属性
Mode_t:文件类型以及权限
off_t:文件大小
ino_t:编号
参数:
path: 文件的路径
buf: 属性存放空间的首地址
返回值:
成功返回0
失败返回-1
文件名和文件内容是分开放的,文件名不在stat里,而是在目录中。
inode:相当于文件在硬盘中的位置编号
Links:硬链接。两个文件名关联同一个文件
软连接:快捷方式
软连接直接删不影响,但是硬链接如果删了,软连接就用不了了
对于目录来说,这个5表示上一级目录里有五个目录
Access:文件最后一次被读的时间