请问圈圈有关U盘中FAT16的问题

[复制链接]
2944|2
 楼主| khsb 发表于 2008-8-26 11:30 | 显示全部楼层 |阅读模式
圈圈你好,上次看过你推荐的一些资料后学到了不少东西。<br />现在有个问题还是不大明白,想请问一下<br /><br />一个文件系统是FAT16的U盘中,读出了它的FAT和FDT<br />在FDT中只有文件或者文件夹的开始簇号,如何找出FAT中相对应的接下去的簇号?<br />也就是说,FAT表读出后,知道了簇的使用情况,如何与FDT中的文件相互对应起来?<br />例如:<br />U盘中有:111data.txt<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;222data.txt<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data.txt<br />共3个文件<br /><br />FDT为:<br />32&nbsp;32&nbsp;32&nbsp;20&nbsp;20&nbsp;20&nbsp;20&nbsp;20&nbsp;20&nbsp;20&nbsp;20&nbsp;10&nbsp;00&nbsp;0C&nbsp;AA&nbsp;5A&nbsp;1A&nbsp;39&nbsp;1A&nbsp;39&nbsp;00&nbsp;00&nbsp;AB&nbsp;5A&nbsp;1A&nbsp;39&nbsp;02&nbsp;00&nbsp;00&nbsp;00&nbsp;00&nbsp;00&nbsp;<br /><br />44&nbsp;41&nbsp;54&nbsp;41&nbsp;20&nbsp;20&nbsp;20&nbsp;20&nbsp;54&nbsp;58&nbsp;54&nbsp;20&nbsp;18&nbsp;4F&nbsp;7B&nbsp;47&nbsp;1A&nbsp;39&nbsp;1A&nbsp;39&nbsp;00&nbsp;00&nbsp;D5&nbsp;4E&nbsp;16&nbsp;39&nbsp;05&nbsp;00&nbsp;29&nbsp;1F&nbsp;00&nbsp;00<br /><br />31&nbsp;31&nbsp;31&nbsp;20&nbsp;20&nbsp;20&nbsp;20&nbsp;20&nbsp;20&nbsp;20&nbsp;20&nbsp;10&nbsp;00&nbsp;5C&nbsp;AA&nbsp;5A&nbsp;1A&nbsp;39&nbsp;1A&nbsp;39&nbsp;00&nbsp;00&nbsp;AB&nbsp;5A&nbsp;1A&nbsp;39&nbsp;09&nbsp;00&nbsp;00&nbsp;00&nbsp;00&nbsp;00<br /><br />FAT为:<br />F8&nbsp;FF&nbsp;FF&nbsp;FF&nbsp;FF&nbsp;FF&nbsp;04&nbsp;00&nbsp;FF&nbsp;FF&nbsp;06&nbsp;00&nbsp;07&nbsp;00&nbsp;08&nbsp;00&nbsp;FF&nbsp;FF&nbsp;FF&nbsp;FF&nbsp;0B&nbsp;00&nbsp;0C&nbsp;00&nbsp;0D&nbsp;00&nbsp;FF&nbsp;FF&nbsp;00&nbsp;00&nbsp;00&nbsp;00<br /><br />谢谢
computer00 发表于 2008-8-26 12:39 | 显示全部楼层

找到文件目录项后,里面有个文件开始簇号

用开始簇号去找FAT表中对应的项,看这个项里面的值,它的值就是下一簇号。<br />如果该值为0xFFF8~0xFFFF,则说明该文件已经结束。<br /><br />以目录项<br />44&nbsp;41&nbsp;54&nbsp;41&nbsp;20&nbsp;20&nbsp;20&nbsp;20&nbsp;54&nbsp;58&nbsp;54&nbsp;20&nbsp;18&nbsp;4F&nbsp;7B&nbsp;47&nbsp;1A&nbsp;39&nbsp;1A&nbsp;39&nbsp;00&nbsp;00&nbsp;D5&nbsp;4E&nbsp;16&nbsp;39&nbsp;05&nbsp;00&nbsp;29&nbsp;1F&nbsp;00&nbsp;00<br />为例,<br /><br />它就是data.txt文件,文件长度为0x1F29字节(7977字节),起始簇号为0x0005。<br /><br />再看FAT的簇号5,由于是FAT16,所以2字节为一FAT表项,那么簇5就是下面红色所示:<br />&nbsp;<br />&nbsp;簇0&nbsp;&nbsp;&nbsp;簇1&nbsp;&nbsp;&nbsp;簇2&nbsp;&nbsp;&nbsp;簇3&nbsp;&nbsp;&nbsp;簇4&nbsp;&nbsp;&nbsp;簇5&nbsp;&nbsp;&nbsp;簇6&nbsp;&nbsp;&nbsp;簇6&nbsp;&nbsp;&nbsp;簇8<br />F8&nbsp;FF&nbsp;FF&nbsp;FF&nbsp;FF&nbsp;FF&nbsp;04&nbsp;00&nbsp;FF&nbsp;FF&nbsp;<font color=#FF0000>06&nbsp;00</font>&nbsp;07&nbsp;00&nbsp;08&nbsp;00&nbsp;FF&nbsp;FF&nbsp;FF&nbsp;FF&nbsp;0B&nbsp;00&nbsp;0C&nbsp;00&nbsp;0D&nbsp;00&nbsp;FF&nbsp;FF&nbsp;00&nbsp;00&nbsp;00&nbsp;00<br /><br />读取FAT中簇5的数据,发现它的值为0x0006,说明下一簇为簇6,再读簇6的值,发现值为0x0007,<br />说明下一簇为簇7,再读簇7的值,发现值为0x0008,说明下一簇为簇8,再读簇8的值,<br />发现值为0xFFFF了,说明文件到该簇已经结束了。<br /><br />那么这个文件总共有4个簇,即簇5,6,7,8。文件大小为7977字节,由此可以推断出你的文件系统没簇<br />大小为2K,即每簇扇区数为4。
 楼主| khsb 发表于 2008-8-26 13:25 | 显示全部楼层

明白了,多谢多谢

  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

21

主题

42

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部