目录 上一页 下一页 下一章

第7章 文件控制块 -171-

我们可以将一个文件设成只读、隐含或系统文件。具有不同属性的文件在一般操作上具有不同的表现,如DIR命令无法列出隐含或系统文件,DEL命令无法删除只读、隐含或系统文件等等,我想这些现象大家平时一定已有所了解。我们现在就来讨论一下DOS是如何规定文件属性的。
  我们习惯于说某某文件具有什么什么属性,其实这个说法是不全面的。真正具有属性的并不是文件,严格地说应该是目录。我们知道每个文件都有文件名、长度以及建立或最后修改的日期等特征信息,这些信息组成了这个文件的目录项,DOS将各个目录项组织在一起存放在磁盘上的特定区域内,构成了磁盘的目录表(FDT--File Directory Table)。我们平时使用DIR命令所看到的就是这个目录表。

图7-2 文件属性定义
  除了文件目录外我们知道磁盘上还有子目录名和卷标,这两者和文件的目录是混存在一个表中的,DOS之所以能区分子目录、卷标和文件就是依靠它们所具有的不同属性。所以我们说属性并非是文件所独有,子目录名与磁盘卷标同样具有属性。通过文件控制块我们可以看到DOS用一个字节数据表示文件的属性,DOS把这一个字节数据和目录项的其它特征信息放在一起存入目录表中,这个字节是这样定义的(图7-2):
  属性字节的高2位没有使用,其余6个位表征6种不同的属性。可以看到若一个文件的属性字节为01H,那么这个文件就
是只读文件,DEL命令就无法删除这个文件。如果一个文件的属性字节是03H,那么这个文件就具有只读与隐含两种属性,它既无法删除同时也无法用DIR列出。若某个目录项的属性字节为08H,即属性字节的bit3位=1,那么DOS就将这个目录项当作卷标。同样若某目录项的属性为10H,这个目录项就会被当做子目录名。
7.2.3 驱动器号
  普通FCB的第一个字节就是驱动器号,这个数据要由我们在编程时填入。它是这样定义的:
未打开:0--当前驱动器
1--驱动器A
2--驱动器B
3--驱动器C
...
打开后:1--驱动器A
2--驱动器B
3--驱动器C
...
  DOS允许我们使用"当前驱动器"代替一个具体的驱动器名,执行"打开文件"或"建立文件"操作后DOS会自己查出"当前驱动器"的号码并将其重新填入FCB中。
7.2.4 记录块与记录
  在我们看来,一个文件无非就是由若干字节的二进制数据组成的。然而如果你打算使用FCB来处理文件,那么我们就需要转变一下观念。我们需要把一个文件切割成一个个较大的数据块,这些数据块是等长度的(最后一块可能短一些),我们称其为"记录块"。对于每一个记录块,我们还需要将其再切割成一些小数据块,这些小数据块也是等长度的,我们称之为"记录"。每一个记录则是由一定数量的字节组成。请看图7-3:

Copyright © 2004-2015 Reanimator www.cookmoon.org

目录 上一页 下一页 下一章