文件IO --- 这里的文件指的是 磁盘/硬盘上的文件.
计算机中存储数据的设备
速度 存储大小 成本 数据是否会丢失
- CPU(中的寄存器、缓存) 最快 最小 最贵 丢失
- 内存 其次 其次 其次 丢失
- 硬盘 最慢 最大 最便宜 不丢失
对于计算机来说,文件是一个广义的概念:
- 硬盘上的 普通文件 (文档等等,点开之后直接是可运行的文件,里面没有再存有其他文件)
- 硬盘上的 目录(电脑中的文件夹)
计算机上的一些硬件设备,也被操作系统抽象成了文件:
键盘、显示器、网卡等等
比如c语言中有
printf 和 scanf
fprintf 和 fscanf
//后面两个是针对文件
fprintf(STDOUT,"hello world") 的效果是等同于 printf("hello world");
STDOUT就是一个文件,而且是一个显示器文件
文件是以树结构在硬盘上存储的
这里的树,是N叉树
计算机以此电脑作为 数根节点
下一级就是各个盘符
路径: 操作系统用来描述一个文件的路径的方式
以 / (正) 或 \(反)斜杠来隔断层级
以下面这个文档来举例
绝对路径:
//从盘符开始到目标文件的路径
C:\bless\xxx\file.txt
相对路径:
//从当前位置开始到目标文件的路径
例子一:
比如当前位置在 C:\bless\xxx
则相对路径为 .\file.txt
这里的点就代表了当前目录路径 C:\bless\xxx
列子二:
当前位置 C:\bless\xxx\NEXT
相对路径为 ..\file.txt
这里的 .. 就表示的是上一层的目录
关于 / 和 \ ( /正 \反 斜杠)
windows两种方式都支持,但是主流推荐 正斜杠 /
因为 \ 在一些编译器中 代表着转义字符,用起来相对麻烦
文件的两种类型
一、文本文件
//以文本 或 字符串 来理解文件中的内容(也就是说, 文本文件中的所以内容,都是用来表示字符串),这里的二进制内容都是合法的字符
合法的字符:指的是字符编码,例如汉字一般是用 gbk/utf8,英文字母一般是用acsii码表
编译器支持的 字符编码表 所对应的字符才是 合法的字符
二、二进制文件
可以存储任何形式的数据
可以通过记事本方式打开,来判断文件是哪种文件
如果打开后展示的是正常的字符串,如汉字英文等待就是文本文件
如果打开后展示的是乱码加上符号等,就是二进制文件
有哪些文件是属于二进制文件呢?
这里指的 内容丰富指的是word文档中有很多工具 比如可以调整字体加粗,,颜色,格式,行间距等等, 这种富文本文件就属于二进制文件
普通的文本文档和.C .Java .cpp 就是文本文件