![](https://csdnimg.cn/release/download_crawler_static/87620346/bg3.jpg)
精品文档交流
(3)使用信息。包括文件的建立日期及时间、上次存取文件的日期及时间、当前的使
用信息等。
以 MS-DOS(使用 FAT16文件系统)为例,它的每个文件控制块包括 32个字节,其字节
分配情况如图 3-2所示:
文件名 扩展名 属性 保留 时间
字节
日期 首块号 大小
8B 3B 1B 10B 2B 2B 2B 4B
图 3-2 MS-DOS的文件控制块
其中属性字段占一个字节,它的每一位用来表示该文件是否具有某种属性,如果某一位
的值为 1,则表示该文件具有该属性。各位所表示的属性如表 3-1所示:
表 3-1 文件属性对照表
位 7 6 5 4 3 2 1 0
属性 保留 保留 存档 子目录 卷标 系统文件 隐藏 只读
3.根目录区
FAT12、FAT16 的根目录区是固定区域、固定大小的,位于第二个 FAT 之后,如图 3-1 所
示,且占据若干连续扇区,其中 FAT12 占 14 个扇区,一共 224 个根目录项;而 FAT16 占 32
个扇区,最多保存 512 个目录项,作为系统区的一部分。FAT32 的根目录是作为文件处理的,
采用与子目录文件相同的管理方式,其位置不是固定的,不过一般情况也是位于第二个 FAT
之后的,其大小可视需要增加,因此根目录下的文件数目不再受最多 512 个的限制。
3.2.2 几个 C语言库函数介绍
由于我们的文件系统是建立在内存的虚拟磁盘上的,在退出文件系统的时候必须以一个
文件的形式保存到磁盘上;而在启动文件系统的时候必须从磁盘上将该文件读入到内存的虚
拟磁盘中。下面介绍几个可能会用到的 C 库函数,在使用这些库函数之前必须包含头文件
“stdio.h”。
1.打开文件函数 fopen()
(1)格式:FILE *fopen(const char *filename,const char *mode)
(2)功能:按照指定打开方式打开指定文件。
(3)输入参数说明:
filename:待打开的文件名,如果不存在就创建该文件。
mode: 文件打开方式,常用的有:
"r":为读而打开文本文件(不存在则出错)。
"w":为写而打开文本文件(若不存在则创建该文件;反之,则从文件起始位置写,
原内容将被覆盖)。
"a":为在文件末尾添加数据而打开文本文件。(若不存在则创建该文件;反之,在
原文件末尾追加)。
"r+":为读和写而打开文本文件。(读时,从头开始;在写数据时,新数据只覆盖所
占的空间,其后不变) 。
"w+":首先建立一个新文件,进行写操作,随后可以从头开始读。(若文件存在,
原内容将全部消失) 。