在FAT32文件系统下,分区根目录下的文件及文件夹的目录项存放在根目录区中,分区子目录下的文件及文件

夹的目录项存放在子目录区中,根目录和子目录区都在数据区中。

FAT32目录项类型

FAT32与FAT16目录项一样分为四类

短文件名目录项

长文件名目录项

“.”目录项和“..”目录项

卷标目录项

FAT32短文件名目录项分析

FAT32与FAT16只有短文件有区别,其他三类完全一样,这里只是讲述FAT32的短文件名

FAT32短文件名目录项的含义

字节偏移

字段长度

字段内容及含义

0x00

8

主文件名

0x08

3

文件的扩展名

 

 

 

0x0B

1

文件属性

00000000(读/写) 0x00

00000001(只读) 0x01

00000010(隐藏) 0x02

00000100(系统) 0x40

00001000(卷标) 0x08

00010000(子目录)0x10

00100000(存档) 0x20

0x0C

1

未用

0x0D

1

文件创建时间精确到10ms的值

0x0E

2

文件创建时间,包括时,分,秒

0x10

2

文件创建日期,包括年,月,日

0x12

2

文件最近访问日期,包括年,月,日

0x14

2

文件起始簇号的最高位

0x16

2

文件修改时间,包括时,分,秒

0x18

2

文件修改日期,包括年,月,日

0x1A

2

文件的起始簇号的低位

0x1c

4

文件大小(以字节为单位)

参数详细分析

(1)主文件名

文件名用不完8个字节,后面用空格(0x20)填充。

另外该位置的第一个字节也用来表示目录项的分配状态,当这个字节为 0x00时,表示该目录从未用过,当这个

字节是0xE5时,表示该目录项曾经使用过,但目前已经被删除。

(2)文件扩展名

没有扩展名的用空格填充

(3)文件属性

文件的各种属性,表示的方法是按二进制位定义,最高两位保留未用,

(1)      未用

(5)文件创建时间精确到10ms的值

文件在创建时的时间值中精确到10ms的值用该字节表示。例如:86H,十进制为134,所以文件创建的时间为

1340ms,即1.34s.

(6)文件创建时间

A:0-4位,这5位记录秒的值,单位是2s,也就是把这四位的值乘以2,才是秒的值,其取值范围为0-29.

B:5-10位,这6位记录分的值,其取值范围为0-59.

C:11-15位,这5位记录时的值,其取值范围为0-23

计算出来的值再加上1340ms。才是文件最终的创建时间。.

(7)文件创建日期

A:0-4位,这5位记录日的值,其取值范围为0-31

B:5-8位,这4位记录月的值,其取值范围为0-12.

C:9-15位,这7位记录年的值,其取值相对于1980年开始计数的,其值必须加上1980。

(8)文件最近访问日期

同文件创建日期算法一样

(1)      文件起始簇号的高位

是指文件的内容所在的第一个簇号

(2)      文件修改时间略

(3)      文件修改日期略

(12)文件起始簇号低位

是指文件的内容所在的第一个簇号

(13)文件大小以字节大小为单位小端存储

FAT32长文件名目录项分析

长文件名目录项

为了兼容DOS与Winddows 3.x在Winddows 95以上的系统中,超过8.3格式的文件或目录实际存储着两

个名字,一个短文件名和一个长文件名。当创建一个长文件名时,其对应的短文件名的处理有以下三个原则:

A:系统取长文件名的前6个字符加上“~1”,形成短文件名,其扩展名保持不变

B:如果已经存在这个名字的文件,数字自动加1,“~2”

C:如果有DOS与Winddows 3.x的非法字符,以“­_”替代。

长文件名存储时,其属性值为 OFH,能够存储13个字符,如果文件名很长,一个长文件名需要多个目录项,

这些目录是倒序排放在其短文件名的前面。

FAT32长文件名目录项的含义

字节偏移

字段长度

字段内容及含义

0x00

1

序列号

0x01

10

文件名的第1-5个Unicode码字符

0x0B

1

属性标志 OFH固定值

0x0C

1

保留未用

0x0D

1

短文件名检验和

0x0E

12

文件名的第6-11个Unicode码字符

0x1A

2

始终为0

0x1c

2

文件名的第12-13个Unicode码字符

特殊说明

(4)      序列号

0-4位描述了长文件名目录项的顺序号

6位若为1,则表明是目录项的最后一项

如果文件被删除,该字节会改为“E5”。

(5)      文件名字符

如果文件名已经记录完,但该参数的空间中还有未用的字节,就会在文件名最后一个字符填充两个00H,随后

未用的填充FFH

(6)      短文件名检验和

长文件名目录项通过这个检验和将其与短文件名目录项关联起来。检验和是通过短文件名计算而来的,同一长

文件名的检验和必须一致。

校验和的计算方法是依次将短文件名的各个字符对应的二进制相加,在每一步相加之前先将二进制的值依

次向右移动一位,最右边的位循环移动到最左边,然后再加上下一个字符所对应的二进制值,直到把最后一个字

符加完。

“.”目录项(当前目录)和“..”目录项(上级目录)

在子目录所在的文件目录项区域中,总有两个特殊的目录,“.”目录项和“..”目录项可以用DOS命令的DIR查

看到。

说明

A:“.”目录项所描述的起始簇号,是子目录本身所在簇号,

B:“..”目录项所描述的起始簇号,是上一级目录的起始簇号,如果上级目录为根目录,则起始簇号被设置为0.

C:这两个目录都大小被设置0,同其他的文件夹目录项一样。

系统利用“.”目录项(当前目录)和“..”目录项实现目录之间的双向联系,从而把整个文件系统联系在一起。

卷标目录项

卷标可以被随时修改,存放在FDT中,

A:卷标属于短文件名,最大支持11个字符。

B:不记录起始簇号与大小

C:不记录创建时间和最后访问时间,只记录修改时间

FAT32文件系统根目录与子目录的管理

FAT32文件系统对于根目录下文件和管理,统一在数据区中的根目录为这些文件创建目录项,并由FAT

表为文件的内容分配簇存放数据。而根目录的首簇由格式化程序决定,并存放在DBR的BPB中。如果根目录

下的目录项数目过多,这些文件的目录项在根目录区的首簇存放不下,FAT表就会为根目录分配新的簇来存

放根目录下文件及文件夹的目录项。

根目录管理步骤

第1步:定位DBR

第2步:定位根目录首簇

第3步:定位目录项

第4步:定位FAT

第5步:定位数据区

子目录管理步骤

第1步:定位DBR

第2步:定位根目录首簇

第3步:定位子目录项

第4步:定位子目录簇

第5步:定位子目录文件

第6步:定位FAT

第7步:定位数据区

FAT32文件系统之目录项分析 (四)相关推荐

  1. FAT16文件系统之目录项分析(四)

    FAT16文件系统的FDT分析 1:FDT位置 FDT的含义为文件目录表,它在一个文件系统中的具体位置是紧跟在FAT2之后. 定位过程: A:系统通过读取该分区表信息,定位到其DBR扇区 B:读取DB ...

  2. fatfs文件系统中目录代码分析

    fat文件系统中,根目录中存储目录条,每个目录条占用32个字节.含义如下: 在fat文件系统中,这种为短文件名(8+3)目录条信息. 指定根目录条目.文件首蔟号,配置文件的首蔟号 #if !FF_FS ...

  3. linux fat32 乱码,FAT32文件系统乱码的研究和分析

    刘宏斌 摘 要 FAT32文件分配表是Windows操作系统磁盘分区格式的一种.采用32位的文件分配表,使其对磁盘的管理能力增强.本文通过文件系统出现乱码对FAT32的文件分配表进行研究和分析 关键词 ...

  4. FAT32文件系统学习

    FAT32文件系统组成及介绍 FAT32文件系统结构图: 下图演示了FAT32文件系统的DBR: 1.DBR及其保留扇区:含义是DOS引导记录,也称为操作系统引导记录,在DBR之后往往有一些保留扇区 ...

  5. fat16和fat32文件系统学习

    根据自己电脑的fat,fat32分区来学习fat,fat32文件系统 fat16和fat32文件系统学习 - 下载频道 - CSDN.NET http://download.csdn.net/deta ...

  6. 硬盘FAT文件系统原理的详细分析——转载

    首先给大家分享一个巨牛巨牛的人工智能教程,是我无意中发现的.教程不仅零基础,通俗易懂,而且非常风趣幽默,还时不时有内涵段子,像看小说一样,哈哈-我正在学习中,觉得太牛了,所以分享给大家!点这里可以跳转 ...

  7. FAT文件系统原理的详细分析

    示例源代码下载: http://download.csdn.net/user/retty85 文本结构索引: 图片表格索引: 表1 分区表参数 表2 扩展分区表项的内容 一.硬盘的物理结构 图1 硬盘 ...

  8. linux vfs 根节点名称,Linux:文件,目录项,索引节点,超级块,VFS,具体文件系统...

    [笔记:http://m.blog.csdn.net/blog/zhouzhou135] 在了解文件系统之前,先了解磁盘格式化的知识. 所以要理解文件系统的数据结构,要从两个方向来理解: 1:磁盘中的 ...

  9. Linux,扇区,块,文件系统,目录中的记录项

    1.Windows下的文件系统是:NTFS 2.Linux下的文件系统是ext2,ext3,最新的是ext4 3.一般的硬盘以512个字节为一个扇区 4.磁盘中一个Block的大小时扇区的倍数,PC默 ...

最新文章

  1. java中的new_java里的new到底是什么意思?
  2. Android下载图片路径问题
  3. 计算机一级考可以用计算器吗,全国计算机一级考试题(判断题),你对电脑知识了解多少?...
  4. 利用gcc自带的功能-fstack-protector检测栈溢出及其实现
  5. java mvc中重复提交_SpringMVC之——防止重复提交表单的方法(一)
  6. 【复赛前排分享(一)】上分有路勤为径,大神教你剖析提分点
  7. 腾讯生死年 | 畅言
  8. CE驱动程序快速入门(转)
  9. k210应用8-使用DMAC实现存储器与存储器之间的高速数据传输
  10. 通过京东技术演进和淘宝技术演进,探察未来技术和架构
  11. 黑马程序员JAVAEE企业级开发应用教程笔记
  12. 线上营销和线下营销如何完美结合?
  13. 线性规划问题(LP问题)
  14. 阿里最全面试116题整理
  15. 小知识(1):关于端口的复用及重映射
  16. 0417-Autosar AP总结
  17. CAD计算机辅助设计与BIM的区别,BIM与CAD的主要区别是什么?
  18. CCCCCCCCCCCCCCCCCC
  19. 电容型号和品牌的查询
  20. 中龍鸿业安全稳定必学的盘口言语有哪些?什么是盘口言语?

热门文章

  1. 未来展望:Starday供应链火力全开,为跨境电商再添动力!
  2. 两个字符串的最长公共子序列长度_求2个字符串的最长公共子序列和最长公共子字符串...
  3. TrueCrypt加密:TrueCrypt Mount更改加密卷密码(4)
  4. PHP代码审计之基础篇
  5. 神之门V8(2):GC的混乱之治(上)
  6. CVE-2022-28060 i春秋云镜
  7. 【FPGA】状态机实现按键消抖
  8. android释放焦点_android 取消edittext焦点
  9. 60 个 Python 闯关小例子,建议收藏
  10. 最好的MATLAB学习网站