FAT12中,如何定位大于一个扇区(512B)的文件内容
来源:互联网 发布:英伦对决影评知乎 编辑:程序博客网 时间:2024/04/30 20:20
【0】README
- 0.1)本文旨在于 演示在FAT12中, 如何取定位大于 512B 的文件内容,和查看它;
- 0.2)如何制作FAT12文件系统,以及如何向文件中添加temp.txt文件,参见: { http://blog.csdn.net/pacosonswjtu/article/details/48403031 }
【1】我们看到 temp.txt 所在 根目录区条目的初始簇号为 0003h=3;
我们转向 第3个 FAT项去看看 》》
【2】从下图 ,我们看到如下:
0000200: f0 ff ff 00 40 00 05 f0 ff 00 00 00 00 00 00 00也即是是 0-ff0 1-fff 2-000 3-004 4-005 5-fff
所以我们可以看到,fff表结束了,temp.txt 占用的扇区号为 3, 4, 5(相对于数据区而言),共计3个簇(扇区)
(Alert): 簇==1个还是多个扇区,这个是在 FAT12 引导扇区内定义好了的,要记死这些东西;
我们转向数据区看看 》》
【3】数据区部分截图:
【4】这里,我们不得不算一下 FAT12文件系统的各个结构的起始扇区了;
4. 每FAT扇区数==BPB_FATSz16=0009=offset(22) + length(2)
(纠错1) 非常抱歉,上图3.BPB_RootEntCnt=00e0=14 而不是15;
而 FAT12的结构图有:引导扇区、FAT1、FAT2、根目录区、数据区:
而由引导扇区内容,我们知道:
- 引导扇区的扇区范围 = 0~0;
- FAT1 的扇区范围 = 1~9;
- FAT2 的扇区范围 = 10~18;
- 根目录区的扇区范围 = 19~32;
- 数据区的扇区范围 = 33~ending;
- 又每个扇区=512B,所以数据区的偏移量为 (32+1)* 512 = 16896B,16896/16=1056行,所以数据区的开始字节数为:16896B 。
- 出现的问题:而模块3中 文件存储的起始行为 1088 行,为什么?[ 1056行和1088行相差一个扇区而已 (1088-1056) * 16 = 512 ]
- 具体原因:参见 { http://blog.csdn.net/pacosonswjtu/article/details/48403031 的“4.2.a.3)算数据区开始扇区号:”}
【5】验证的时刻到了
参见模块3中的 文件内容起始行1089 和 结束行1167;所以总大小为 (1167-1089 + 1) * 16 = 1264,
Bingo了。
0 0
- FAT12中,如何定位大于一个扇区(512B)的文件内容
- fasm完成一个简单的FAT12的镜像文件
- FAT12软盘引导扇区格式
- 如何编程获取到一个文件的扇区位置,并读写它?
- 通过扇区读取文件内容
- 制作FAT12软盘以查看软盘的根目录条目+文件属性+文件内容
- vim中如何将一个文件的内容拷贝到另一个文件中
- vim中如何将一个文件的内容拷贝到另一个文件中
- 如何修改一个文件的内容。
- 文件簇,文件扇区与flash中扇区及页的关系
- 复制文件a的内容到文件b中
- vim中如何复制当前文件内容粘贴到另外一个文件的命令
- FAT12文件系统之引导扇区结构
- FAT12文件系统之引导扇区结构
- 关于fseek不能定位大于2G文件的问题
- 把一个文件的内容付到别一个文件中
- 如何生成一个 WinCE 下文件全路径大于 MAX_PATH(260) 字节的文件路径?
- 物理扇区和逻辑扇区(相对扇区)的关系
- 中国省份及其地级市整理JSON版(2015-08-23)
- STL 之 deque的用法
- HDU 5438 Ponds (拓扑排序应用+DFS)
- ng-class用法
- 前台向后台传递中文参数,防止乱码
- FAT12中,如何定位大于一个扇区(512B)的文件内容
- [BZOJ 3040] 最短路(road) · 堆优化dijkstra
- OJ 系列之从M个不同字符中任取N个字符的所有组合
- c++ primer 学习笔记-第十四章
- CentOS下ifconfig eth0:unknown interface:no such device
- Base64编码与图片互转
- Object类中hashCode()和equals()方法详解(附图)
- 从dra中导出pad等文件
- 数据结构之线段树