FAT16文件系统之目录项分析(四)
FAT16文件系统的FDT分析
1:FDT位置
FDT的含义为文件目录表,它在一个文件系统中的具体位置是紧跟在FAT2之后。
定位过程:
A:系统通过读取该分区表信息,定位到其DBR扇区
B:读取DBR的保留扇区数(OEH –0FH).
C:读取每个FAT扇区数(16H – 17H)
D:读取FAT表的个数保留扇区当数 + FAT个数 * 每个FAT扇区数
FDT的数据内容
FAT16文件系统目录项分析
1:目录项的作用及结构特点
目录项对于FAT文件系统来讲也是很重要的一个组成部分,其主要及结构特点如下
A:分区中的每一个文件中文件夹都被分配一个大小为32字节的目录项,用心描述文件或文件夹的属性,大小,起始簇号和时间,日期等信息,那当然也有文件或文件夹的名字
B:在FAT文件系统中,目录被视为特殊类型的文件,所以每一个目录也跟文件一样有目录项。
C:在FAT16文件系统下,分区根目录下的文件及文件夹的目录项存放在FDT中,分区子目录下的文件及文件夹的目录项存放在数据区中相应的簇中。
D:根据目录项的作用及特点,可以把目录项分为四类
短文件名目录项长文件名目录项“.”目录项和“..”目录项卷标目录项
2:短文件名目录项
所谓的短文件名是指DOS和Windows 3.x时代文件名的传统格式即“8.3”格式。在这种格式的限制下,用户在给文件起名字的时候,主文件名不能超过8个字符,并且不支持中文。在这种格式下,文件目录项中只需要记录8 + 3 = 11字节就可以保存文件名了,(主文件名与扩展名之间的“.”是默认的,不有记录),这种格式的目录项就是短文件名目录项.
FAT16短文件名目录项的含义
字节偏移 |
字段长度 |
字段内容及含义 |
|
0x00 |
8 |
主文件名 |
|
0x08 |
3 |
文件的扩展名 |
|
0x0B |
1 |
文件属性 |
00000000(读/写) 0x00 |
00000001(只读) 0x01 |
|||
00000010(隐藏) 0x20 |
|||
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) 文件属性
文件的各种属性,表示的方法是按二进制位定义,最高两位保留未用,
(4) 未用
(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) 文件最近访问日期
同文件创建日期算法一样
(9) 未用
(10) 文件修改时间略
(11) 文件修改日期略
(12) 文件起始簇号
是指文件的内容所在的第一个簇号
(13)文件大小以字节大小为单位小端存储
3:长文件名目录项
为了兼容DOS与Winddows 3.x在Winddows 95以上的系统中,超过8.3格式的文件或目录实际存储着两个名字,一个短文件名和一个长文件名。当创建一个长文件名时,其对应的短文件名的处理有以下三个原则:
A:系统取长文件名的前6个字符加上“~1”,形成短文件名,其扩展名保持不变
B:如果已经存在这个名字的文件,数字自动加1,“~2”
C:如果有DOS与Winddows 3.x的非法字符,以“_”替代。
长文件名存储时,其属性值为 OFH,能够存储13个字符,如果文件名很长,一个长文件名需要多个目录项,这些目录是倒序排放在其短文件名的前面。
FAT16长文件名目录项的含义
字节偏移 |
字段长度 |
字段内容及含义 |
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码字符 |
特殊说明
(1) 序列号
0-4位描述了长文件名目录项的顺序号
6位若为1,则表明是目录项的最后一项
如果文件被删除,该字节会改为“E5”。
(2) 文件名字符
如果文件名已经记录完,但该参数的空间中还有未用的字节,就会在文件名最后一个字符填充两个00H,随后未用的填充FFH
(3) 短文件名检验和
长文件名目录项通过这个检验和将其与短文件名目录项关联起来。检验和是通过短文件名计算而来的,同一长文件名的检验和必须一致。
校验和的计算方法是依次将短文件名的各个字符对应的二进制相加,在每一步相加之前先将二进制的值依次向右移动一位,最右边的位循环移动到最左边,然后再加上下一个字符所对应的二进制值,直到把最后一个字符加完。
4:“.”目录项(当前目录)和“..”目录项(上级目录)
在子目录所在的文件目录项区域中,总有两个特殊的目录,“.”目录项和“..”目录项可以用DOS命令的DIR查看到。
说明
A:“.”目录项所描述的起始簇号,是子目录本身所在簇号,
B:“..”目录项所描述的起始簇号,是上一级目录的起始簇号,如果上级目录为根目录,则起始簇号被设置为0.
C:这两个目录都大小被设置0,同其他的文件夹目录项一样。
系统利用“.”目录项(当前目录)和“..”目录项实现目录之间的双向联系,从而把整个文件系统联系在一起。
5:卷标目录项
卷标可以被随时修改,存放在FDT中,
A:卷标属于短文件名,最大支持11个字符。
B:不记录起始簇号与大小
C:不记录创建时间和最后访问时间,只记录修改时间
FAT16文件系统之目录项分析(四)相关推荐
- FAT32文件系统之目录项分析 (四)
在FAT32文件系统下,分区根目录下的文件及文件夹的目录项存放在根目录区中,分区子目录下的文件及文件 夹的目录项存放在子目录区中,根目录和子目录区都在数据区中. FAT32目录项类型 FAT32与FA ...
- fatfs文件系统中目录代码分析
fat文件系统中,根目录中存储目录条,每个目录条占用32个字节.含义如下: 在fat文件系统中,这种为短文件名(8+3)目录条信息. 指定根目录条目.文件首蔟号,配置文件的首蔟号 #if !FF_FS ...
- 硬盘FAT文件系统原理的详细分析——转载
首先给大家分享一个巨牛巨牛的人工智能教程,是我无意中发现的.教程不仅零基础,通俗易懂,而且非常风趣幽默,还时不时有内涵段子,像看小说一样,哈哈-我正在学习中,觉得太牛了,所以分享给大家!点这里可以跳转 ...
- FAT文件系统原理的详细分析
示例源代码下载: http://download.csdn.net/user/retty85 文本结构索引: 图片表格索引: 表1 分区表参数 表2 扩展分区表项的内容 一.硬盘的物理结构 图1 硬盘 ...
- FAT16文件系统之FAT表浅谈(三)
FAT16文件系统的FAT表分析 1:FAT表的作用及结构特点 FAT即文件系统分配表,对于FAT文件系统来讲是非常重要的一环.其主要作用如下 (1) FAT文件系统一般有两份FAT,它们由 ...
- linux vfs 根节点名称,Linux:文件,目录项,索引节点,超级块,VFS,具体文件系统...
[笔记:http://m.blog.csdn.net/blog/zhouzhou135] 在了解文件系统之前,先了解磁盘格式化的知识. 所以要理解文件系统的数据结构,要从两个方向来理解: 1:磁盘中的 ...
- Linux,扇区,块,文件系统,目录中的记录项
1.Windows下的文件系统是:NTFS 2.Linux下的文件系统是ext2,ext3,最新的是ext4 3.一般的硬盘以512个字节为一个扇区 4.磁盘中一个Block的大小时扇区的倍数,PC默 ...
- linux 如何赋值目录,Linux文件系统之目录的建立
一:前言 在用户空间中,建立目录所用的API为mkdir().它在内核中的系统调用入口是sys_mkdir().今天跟踪一下 函数来分析linux文件系统中目录的建立过程. 二:sys_mkdir() ...
- linux创建根目录代码,Linux文件系统之目录的建立
一:前言 在用户空间中,建立目录所用的API为mkdir().它在内核中的系统调用入口是sys_mkdir().今天跟踪一下 函数来分析linux文件系统中目录的建立过程. 二:sys_mkdir() ...
最新文章
- 从输入网址到显示网页的全过程分析【转】
- vue双向绑定原理源码解析
- Codeforces Round #395 (Div. 2)(未完)
- ZooKeeper的典型应用
- Eclipse执行import命令导入maven项目时报错:Add a version or custom suffix using Name template in Advanced set...
- Delphi 与 DirectX 之 DelphiX(55): TDIB.DoMosaic();
- Spring Cloud Gateway 整合阿里 Sentinel网关限流实战
- python记录日志_5分钟内解释日志记录—使用Python演练
- elementui下拉框选择图片_Element UI系列:Select下拉框实现默认选择
- (译文)Flash,Silverlight,Win32:2011三大垂死平台
- unicorn模拟执行学习
- 一个命令让redis服务端所有信息无所遁形~(收藏吃灰系列)
- 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 F题 Overlapping Rectangles(线段树)
- json dumps dump区别
- 启动react-native报错 Unrecognized font family 'Ionicons'
- Hiho1384 倍增+归并排序
- 运动会加油稿计算机学院150字,学校运动会加油稿150字
- 中小尺寸常见显示屏分辨率列表
- 《底层逻辑》 思维导图
- 【RC延迟电路 RC充电电路】 multisim 14.0仿真 参数计算
热门文章
- 读书系列----《别让情绪失控害了你》
- 推荐3dMax三维设计十大插件
- 函数/方法的局部作用域与for的作用域问题
- sdio设备无法识别
- 苹果捷径 此服务器的证书无效,微信小程序 网络请求 此服务器的证书无效
- MYSQL 基于抖音上MYSQL开发工程师面试,如果是你怎么样
- python批量删除微信好友_黑科技,Python 脚本帮你找出微信上删除你好友的人(附视频教程)...
- iso14443 非接触式IC卡协议
- JAVA课程设计—飞机大战和道路狂飙小游戏(可连接数据库实现用户信息查询、刷新)
- 滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(9月14日~9月20日)...