FAT32文件系统 - 图文(6)

2019-04-16 17:46

(3)0x0B-0x0B:1个字节,长目录项的属性标志,一定是0x0F。 (4) 0x0C-0x0C:保留。

(5) 0x0D-0x0D:1个字节,校验和。如果一个文件的长文件名需要几个长文件名目录项进行存储,则这些长文件名目录项具有相同的校验和。

(6)0x0E-0x19:12个字节,文件名的第6-11个宁符,未使用的字节用0xFF填充。 (7) 0xlA-0xlB:2个字节,保留。

(8) 0xlC-0xlF:4个字节,文件名的第12-13个字符,未使用的字节用0xFF填充。 8.长文件名目录项实例分析

我们建立一个名字为“abcdefghij klmnopqrstuvwxyz1234567890.txt”的文件,来看一F 它的长文件名目录项,如图所示。

长文件名目录项

我们看图中大方框圈定的部分,它由“abcdefghij klmnopqrstuvwxyz1234567890.txt”文 件的短文件名目录项和长文件名目录项组成。最下面的一个目录项是它的短文件名目录项。 由短文件名向上,是它的长文件名目录项。“abcdefghij klmnopqrstuvwxyz1234567890.txt”共有40个字符,每个长文件名目录项可以记录13个字符,因此需要4个长文件名目录项。短文件名目录项向上第一个小方框圈定的目录项是它的第一个长文件名目录项,向上依次为2、3、4号,从每个长文件名目录项的第一个字节可以看出它们的序号。 (1)我们首先看第一个的内容:

> 0x0B字节处的“OF”表示这是一个长文件名目录项。

> 0x00字节的“01”表示这是该文件的第一个长文件名目录项。

> 0x0l-0x0A字节处的10个字节为文件名的第1-5个字符“abcde”,0x0E-0x19字节处 的12个字节是文件名的第6-11个字符“fghijk”.0xlC-0xlF处的4个字节是文件名的第12-13个宁符“Im”。

(2)第二、三个长文件名目录项的第一个字节“02”、“03”表示这是该文件的第二、三 个长文件名目录项,各部分字节的含义读者可以自行分析。 (3)第四个长文件名目录项的第一个字节为“44”,是0x40和0x04进行或运算的结果, 说明这是该文件的第4个长文件名目录项,也是最后一个。它的偏移0x01~0x02处的两个字节为长文件名的最后一个字符“t”,后面未使用的文件名部分先填充了两个字节的“00”,然后开始用0xFF进行填充。 *注意:我们分别看四个长文件名目录项的0x0D字节处的值,这是长文件名目录项的校验和,四个长文件名目录项此处的值均为0x27,说明这四个目录项是同一个文件的长文件名目录项。 9.“.”目录项和“..”目录项 前面曾经介绍过,一个子目录的起始簇,前两个目录项为“.”目录项和“..”目录项,子目录通过这两个目录项及它在父目录中的目录项建立起父子目录间的联系。从结构上来讲,这两个目录项与普通的短文件名目录项没有任何区别,所不同的只是它们描述的对象不同。

> “.”目录项位于子目录起始簇的第一个目录项位置,它用以表明该簇是一个子目录

的起始簇。另外,该目录项实际上是对该子目录自身的描述,它记录了该子目录的时间 信息、起始簇号等。需要强调的是,它所记录的起始簇号也就是该子目录目前所处的位 置。

> “..”目录项位于子目录起始簇的第二个目录项位置,用于描述该子目录的父目录 的相关信息。

以前面我们在根目录下建立的“子目录1”为例,系统为它分配的簇空间为5号簇,图中即为5号簇的内容。

“.”目录项和“..”目录项 我们重点看两个目录项的簇号描述部分(加底纹部分):

> 第一个目录项也就是“.”目录项,记录的簇号为3号簇,也正是本子目录所在的 簇。

> 第二个目录项记录的簇号为这个子目录的父目录的起始簇号,如果父目录是根目 录,则簇号位置全部设置为0。

目录项中也记录着该子目录建立时问和最后修改时间等信息,但Windows似乎建立它 们后使不再对其进行更新。也就是说它们的最后修改时间和建立时间一直保持着建立时 的时间值。这个特点可以用于验证一个目录的建立时间,因为它的建立时间值应该同“.” 和“..”的时间值是一样的。如果一个目录的目录项中所反映的建立时间与“.”和“..” 目录项的时间不同,则用户很可能对其做过隐藏行为或者某个应用程序对其进行了改 变。 *注意:我们无法通过“.”和“..”目录项对目录的最后修改时间进行验证,因为对任何相关 目录的改动都不更新这两个目录项。 10. 卷标目录项

如果创建文件系统时指定了卷标,则会在根目录下的第一个目录项位置建立一个卷目录项

> 卷标名最多允许占用长度为11个字节,也就是为短文件名分配的11个文件名区 域。如果卷标名不足11个字节,则用0x20填充。 *注意:由于每个汉字占用两个字节的空间,而卷标最多只允许占用11个字节,所以用汉字 命名卷标时,卷标名的长度不能超过5个汉字。

> 卷标目录项的结构与普通短文件名目录项结构完全相同,但没有创建时间和访问时 间,只有一个最后修改时间。

> 另外,卷标目录项也没有起始簇和大小值,这些字节位置全部设置为0。0x0B字节

处的属性值为0x08。 *提示:读者可以对照图3.15分析卷标目录项

11. 目录项中时间值的更新

目录项中有三个时间值:最后访问日期、最后写入时问和建立时间。

(1)建立时间。当Windows为一个“新”文件分配新目录项时设置建触时间。“新文件” 的范围比较重要,因为:

> 操作系统为一个已经存在的文件(刚使这个文件原来是位于另外的磁盘上)分配目 录项时,将会沿用它原来的建立时间。例如,对一个文件进行重命名或将其移动到另 外的目录或磁盘时,原有的建立时间将会写入到新建的目录项中。 *注意:目前已知的一种例外情况是,当使用Windows 2000/XP系统的命令行将一个文件移动到不同的卷时,会将建立时间设置为移动时的时间值。 > 拷贝文件时。将会建立一个新的文件,并将建立时间设置为建立时的时间值。 (2) 最后写入时间。当Windows向文件中写入新的内容时,最后写入时间会被更新: > 这个时间值的更新基于文件内容而不基于目录项,住拷贝文件时此值不会被更新。 > 在Windows下移动或拷贝文件时,新目录项将会保持原文件的最后写入时间。 > 改变文件的名字或属性不会导致此值被更新。

> 当一个应用程序向文件中写入内容时,即使应用程序只是做了一个自动保存的操作 而并未改变文件的内容,Windows也会对最后写入时间进行更新。

也就是说,在Windows下移动文件时,目的文件将会沿用原文件的建立时间和最后写 入时间,除非是使用命令行将文件移动到了另外的卷中。

拷贝文件时,目的文件沿用原文件的最后写入时间,但拥有新的建立时间。这很容易使 人产生迷惑,因为文件的建立时间比最后写入时间还要晚。存Windows下使用应用程序新建文件时,文件的最后写入时间会设置为比建立时间稍微晚一些。 (3)最后访问日期。这个时间值只精确到日期,会经常地被更新: > 每次打丌文件都会导致该文件的最后访问日期被更新。

> 即使只是使用右键查看一个文件的属性,新文件的访问日期也会被更新。

> 将一个文件移动到另外的卷时,新文件的最后访问日期会被更新,因为在写入新卷 时,Windows需要读取原文件的内容。

> 如果是在同一个卷内移动文件,访问日期不会改变,因为在这个过程中并不需要读

取文件的内容,文件内容的存储位置也没有发生改变,只是新建一个目录项而已。 *注意:有一个特殊情况,在Windows XP下拷贝文件或使用“复制”菜单功能时,文件的最 后访问日期币会被改变。而Windows 98则在目的文件建立后即更新源文件的最后访问日期。 Windows的某些版本可以设置为不更新最后访问日期。 *提示:对于目录,当它被建立后就不怎么对时间值进行更新,即使是为其分配新的簇或者在其下新建文件时,它的最后写入时间也不被更新。


FAT32文件系统 - 图文(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:mcnp从入门到精通讲座

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: