FAT12中,如何定位大于一个扇区(512B)的文件内容
【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了。
版权声明:本文为博主原创文章,未经博主允许不得转载。
FAT12中,如何定位大于一个扇区(512B)的文件内容的更多相关文章
- html中引入调用另一个公用html模板文件的方法
html中引入调用另一个公用html模板文件的方法 https://www.w3h5.com/post/53.html 这里我使用jquery的方法 <body> <div id=& ...
- 制作FAT12软盘以查看软盘的根目录条目+文件属性+文件内容
[-1]Before for specific info , please visit http://wiki.osdev.org/Loopback_Device [0]我们先上干货,看到效果后,我们 ...
- 面试官:如果 http 响应头中 ETag 值改变了,是否意味着文件内容一定已经更改
本篇文章由我的 一日一题 中的四个 Issue 组合而成 [Q111]http 响应头中的 ETag 值是如何生成的 [Q112]如果 http 响应头中 ETag 值改变了,是否意味着文件内容一定已 ...
- 一个项目中:只能存在一个 WebMvcConfigurationSupport (静态文件失效之坑)
一个项目中:只能存在一个 WebMvcConfigurationSupport 在一个项目中WebMvcConfigurationSupport只能存在一个,多个的时候,只有一个会生效. 静态文件访问 ...
- php -- PHP5中file_get_contents函数获取带BOM的utf-8文件内容
最近,在用file_get_contents函数来取得文本的内容的时候,出现了一个情况(如下),苦思冥想了n久,不得其解,最后,果然还是得靠百度啊..... 百度到一个解释,下面是原文: PHP5中的 ...
- Java中new一个对象是一个怎样的过程?JVM中发生了什么?
Java中new一个对象的步骤: 1. 当虚拟机遇到一条new指令时候,首先去检查这个指令的参数是否能 在常量池中能否定位到一个类的符号引用 (即类的带路径全名),并且检查这个符号引用代表的类是否已被 ...
- 将文件内容隐藏在bmp位图中
首先要实现这个功能,你必须知道bmp位图文件的格式,这里我就不多说了,请看:http://www.cnblogs.com/xiehy/archive/2011/06/07/2074405.html 接 ...
- “医疗信息化行业之中的联发科”- 我们在医疗行业中的定位及目标 想做一个面对中小企业的专业上游软件供应商 台湾联发科技颠覆掉的是一个封闭的手机产业系统 解决方案,即AgileHIS.NET数字化医院基础方案
“医疗信息化行业之中的联发科”- 我们在医疗行业中的定位及目标 我们做中国医疗信息化行业之中的联发科 ---我们在医疗行业中的定位及目标 从我个人来讲,我从2001年到现在这10年之间基本上一直在 ...
- 谷歌笔试题--给定一个集合A=[0,1,3,8](该集合中的元素都是在0,9之间的数字,但未必全部包含), 指定任意一个正整数K,请用A中的元素组成一个大于K的最小正整数。
谷歌笔试题--给定一个集合A=[0,1,3,8](该集合中的元素都是在0,9之间的数字,但未必全部包含), 指定任意一个正整数K,请用A中的元素组成一个大于K的最小正整数. Google2009华南地 ...
随机推荐
- python subprocess 杀掉全部派生的子进程
下面就是今天下午的研究成果. 发布系统需要响应用户的中断请求,需要在GET方法中杀掉由subprocess派生的子进程,刚开始直接用os.kill 发现子进程的子进程无法kill,谷歌了一些, ...
- 解决waitfor()阻塞问题
运行代码执行exe,shell这样的程序或脚本再java中需: (1) 使用Runtime的exec()方法 (2) 使用ProcessBuilder的start()方法 Runtime和Proces ...
- hihoCoder #1586 : Minimum-结构体版线段树(单点更新+区间最值求区间两数最小乘积) (ACM-ICPC国际大学生程序设计竞赛北京赛区(2017)网络赛)
#1586 : Minimum Time Limit:1000ms Case Time Limit:1000ms Memory Limit:256MB Description You are give ...
- 第十三届北航程序设计竞赛决赛网络同步赛 B题 校赛签到(建树 + 打标记)
题目链接 校赛签到 对每个操作之间建立关系. 比较正常的是前$3$种操作,若第$i$个操作属于前$3$种,那么就从操作$i-1$向$i$连一条有向边. 比较特殊的是第$4$种操作,若第$i$个操作属 ...
- 洛谷——1115 最大子段和(区间DP)
题目描述 给出一段序列,选出其中连续且非空的一段使得这段和最大. 输入输出格式 输入格式: 输入文件maxsum1.in的第一行是一个正整数N,表示了序列的长度. 第2行包含N个绝对值不大于10000 ...
- Mac下ll、l、la、等简写命令不能使用
Mac默认用的也是Unix系统,Unix系统本身是没有这些简写命令的,可以通过给命令设置别名来使得可以使用这些简写命令 查看本机所有已经设置的命令别名:alias 设置命令别名:alias ll='l ...
- Can''t find the channel handler for deviceType 工行 个人网银 错误
背景描述:系统Win7,浏览器IE8.登录工商银行个人网银的时候,输入帐号密码和验证码后,出现空白页面,上面一句话 Can''t find the channel handler for devic ...
- StringUtils和IOUtils工具包的使用
加载apache的工具类 <dependency> <groupId>commons-lang</groupId> <artifactId>common ...
- windows中静态库lib和动态dll的区别及使用方法
1. 静态库lib和动态dll的区别 1.1 项目类型 VS在建Win32项目时,有以下选项: windows应用程序控制台应用程序DLL静态库最后两个类型:DLL和静态库,这两种项目类型是不可以单独 ...
- Notification(二)——PendingIntent的flag导致数据同样的问题
MainActivity例如以下: package cc.cu; import android.os.Bundle; import android.view.View; import android. ...