一、Linux下的7种文件属性
1.普通文件 -
2.目录文件 d
3.符号链接文件(软链接) l
4.字符设备文件 c
5.块设备文件 b
6.管道文件 p
7.套接字文件 s
二、IO的分类
1.标准IO(高级磁盘IO)
2.文件IO(低级磁盘IO)
三、标准IO流
流:每一次放入数据,均是需要通过文件指针来进行读写指向文件
流:(1)有源头:APP(2)有目的:缓冲区(3)持续性:不断放入数据到缓冲区
!缓冲机制!
1.全缓冲:缓冲区被放满,程序结束,强制刷新-》会引起缓冲区的刷新
2.行缓冲:缓冲区被放满,程序结束,强制刷新,遇到换行符--》会引起缓冲区的刷新
3.不带缓冲:不存在缓冲区的概念--》每一次读写都是直接输出:stderr
?如何解释缓冲区被放满?
?程序结束引起的刷新?
?强制刷新?
------------当我们了解了缓冲区和流的相关概念和特点后,可以开始进行对文件的操作-----------------
四、标准IO操作文件
(1)打开文件
参数1:需要打开文件的名字(可以包含路径,指针类型)
参数2:打开文件的方式(指针类型)
返回值:
打开文件成功之后的文件流指针
失败返回NULL
(1)打开文件:
(2)关闭文件
(3)按照字符操作文件(读写)
函数名:fgetc() fputc
头文件:#include <stdio.h>
函数原型
int fgetc(FILE *stream);
功能:从指定的文件流中获取一个字符
参数:
指定获取一个字符所处文件的文件流
返回值:
成功返回获取到的字符值
读取到文件末尾返回EOF(-1)
操作中失败返回负数
int fputc(int c, FILE*stream);
功能:向指定的文件流中输出一个字符
参数:
参数1:需要输出的指定字符(字符被称为单字节的整形)
参数2:指定输出字符到的文件对应的文件流
返回值:
成功返回刚写入的字符值
失败返回EOF(-1)
(4)按照行操作文件
标志:寻找’\n’
函数: fgets fputs
函数原型:
char * fgets(char *s, int size, FILE *stream);
参数1:
即将存储内存空间首地址
参数2:
存储内容空间的大小(可以sizeof()测得)
参数3:
指定的文件流
返回值:
成功返回存储内容空间首地址
失败返回NULL
!fgets什么时候会返回!
情况1:第一次遇到'\n'会返回
情况2:读取到size-1就返回
(5)按照块操作文件
函数:
fread() fwrite()
函数原型
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
参数1:存储读取一块内容之后的空间地址
参数2:块的大小---》建议给1
参数3:块的个数---》建议给sizeof()
参数4:要读取的文件对应的文件流
返回值:成功代表读取的块的个数,失败返回0
size_t fwrite(const void *ptr, size_t size, size_t nmemb,
FILE *stream);
参数1:需要写入的内容的空间地址
参数2:块的大小---》建议给1
参数3:块的个数---》建议给sizeof()
参数4:要写入的文件对应的文件流
返回值:成功代表写入的块的个数,失败返回0
五、文件IO操作文件
所需的头文件:(1)#include<sys/types.h>
(2)#include<sys/stat.h>
(3)#include<fcntl.h>
1.打开文件:
int open(const char *pathname, int flags);
功能:打开指定的文件
参数:
参数1:所需打开文件的名字(包含路径)
参数2:打开文件的方式---》主标志 | 副标志
返回值:成功代表一个大于0 的数字(文件描述符),失败返回-1(errno ie set...)
int open(const char *pathname, int flags, mode_t mode);
功能:打开指定的文件
参数:
参数1:所需打开文件的名字(包含路径)
参数2:打开文件的方式---》主标志 | 副标志
参数3:当需要O_CREAT时,就要写该参数来为创建的新文件指明权限(八进制表示)
返回值:成功代表一个大于0 的数字(文件描述符),失败返回-1(errno ie set...)
2.关闭文件:
#include <unistd.h>
int close(int fd);
功能:关闭一个文件描述符
参数:打开文件成功之后的文件描述符
3.写文件
#include <unistd.h>
ssize_t write(int fd, const void *buf, size_t count);
功能:向指定的文件描述符的文件内写入内容
参数:
参数1:打开文件之后的文件描述符
参数2:所需写入的内容所在空间首地址
参数3:需要写入的字节数
返回值:
成功返回写入的字节数
返回0代表没有写入任何内容
返回-1代表出错(errno is set...)
4.读文件
#include <unistd.h>
ssize_t read(int fd, void *buf, size_t count);
功能:从指定的文件描述符的文件中读取内容
参数:
参数1:打开文件之后的文件描述符
参数2:存储读取到结果的空间首地址
参数3:可以读取的字节数---》sizeof测得
返回值:
成功返回读取的字节数
返回0代表读取完毕
返回-1代表出错(errno is set...)
六、操作目录
1.打开目录
2.操作目录
3.关闭目录
4.测试文件属性