文件操作(一)

文件操作

文件是存在磁盘(或硬盘)中的,由操作系统管理的,打开文件会将文件加载到内存中,而内存掉电,数据会丢失,因此在对文件进行修改之后需要将内存中的数据写入到磁盘中去,即在对文件进行操作之后需要进行保存。在Linux中一切皆是文件,目录也是一种文件,是一种特殊文件(目录文件)。Linux中有7种文件类型:

文件类型标识 文件类型
- 普通文件
d 目录文件
l 符号链接文件
s(伪文件) 套接字文件
b(伪文件) 块设备文件(二进制文件)
c(伪文件) 字符设备文件
p(伪文件) 管道文件

占用存储空间的类型:文件、目录、符号链接。符号链接记录的是路径,路径不长则存在innode里面。
其他四种:套接字、块设备、字符设备、管道是伪文件,不占用磁盘空间。

  • 文本文件 中的内容都是以字符的ASCII码存的
  • 二进制文件 中的内容就不一定是以字符的ASCII码存的
    文件操作(一)_第1张图片

文件操作就在 中,文件是硬盘上的东西,程序操作硬盘不太方便,因此就可以使用句柄来操作文件:

#include 

int main(){
	FILE* fp = fopen("./test.txt", "r");
	// fp就是文件指针、文件句柄
	if(fp == NULL){
		// printf("%s\n", strerror(errno));
		perror("fopen");
		return 1;
	}
	printf("%p\n", fp);
	// 这里是打印句柄的地址,并不是文件的地址
	return 0;
}
  • 内存上的有地址,磁盘上的没地址

文件操作(一)_第2张图片

fread()可以把磁盘上的数据读到内存中(注意:在使用之前要先搞一个缓冲区)
返回真实读到了多少个字节 fread (缓冲区首元素地址, 一个元素的大小, 读多少个元素, 缓冲区的长度(第二个参数 * 第三个参数));
在这里插入图片描述
一个程序能打开的文件数量是有上限的,打开了文件,不用了之后一定要及时关闭!!
否则文件描述符泄露,这比内存泄露还严重。
文件操作(一)_第3张图片
文件使用方式总结:

文件使用方式 含义 如果指定文件不存在
“r”(只读) 为了输入数据,打开一个已经存在的文本文件 出错
“w”(只写) 为了输出数据,打开一个文本文件 建立一个新的文件
“a”(追加) 向文本文件尾添加数据 出错
“rb”(只读) 为了输入数据,打开一个二进制文件 出错
“wb”(只写) 为了输出数据,打开一个二进制文件 建立一个新的文件
“ab"(追加) 向一个二进制文件尾添加数据 出错
“r+”(读写) 为了读和写,打开一个文本文件 出错
“w+”(读写) 为了读和写,建议一个新的文件 建立一个新的文件
“a+”(读写) 打开一个文件,在文件尾进行读写 建立一个新的文件
“rb+”(读写) 为了读和写打开一个二进制文件 出错
“wb+”(读写) 为了读和写,新建一个新的二进制文件 建立一个新的文件
“ab+”(读写) 打开一个二进制文件,在文件尾进行读和写 建立一个新的文件

附上:
文件操作(二)

你可能感兴趣的:(C语言)