javacard
驱动牛犊
驱动牛犊
  • 注册日期2004-11-11
  • 最后登录2004-11-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1426回复:3

菜鸟求教:fat/fat32文件系统中是如何定位文件的?

楼主#
更多 发布于:2004-11-11 17:13
我知道在fat/fat32系统中,有一个fat表,指明了文件的簇链;目录文件则指明了文件的起始簇。
我的问题是:目录项中只有文件名,并没有指明文件的上级目录名以及再往前的目录名,而不同目录下文件重名是允许的,那么想定位一个文件,如何通过目录确定它的位置?重名的文件如何区分啊? :mad:
javacard
驱动牛犊
驱动牛犊
  • 注册日期2004-11-11
  • 最后登录2004-11-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-11-12 14:44
仔细看了一下fat的资料,终于搞清楚目录的原理,谢谢nustzhua兄的指点。
20分已给


[编辑 -  11/12/04 by  javacard]
javacard
驱动牛犊
驱动牛犊
  • 注册日期2004-11-11
  • 最后登录2004-11-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-11-12 14:09
我手头也有fat的资料,文中这样描述目录项:
全部32字节的定义如下:
(1) 0-- 7字节 文件正名。
(2) 8--10字节 文件扩展名。
(3) 11字节 文件属性,按二进制位定义,最高两位保留未用,0至5位分别是只读位、隐藏位、系统位、卷标位、子目录位、归档位。
(4) 11--13字节 仅长文件名目录项用,用来存储其对应的短文件名目录项的文件名字节校验和等。
(5) 13--15字节 24位二进制的文件建立时间,其中的高5位为小时,次6位为分钟。
(6) 16--17字节 16位二进制的文件建立日期,其中的高7位为相对于1980年的年份值,次4位为月份,后5位为月内日期。
(7) 18--19字节 16位二进制的文件最新访问日期,定义同(6)。
(8) 20--21字节 起始簇号的高16位。
(9) 22--23字节 16位二进制的文件最新修改时间,其中的高5位为小时,次6位为分钟,后5位的二倍为秒数。
(10)24--25字节 16位二进制的文件最新修改日期,定义同(6)。
(11)26--27字节 起始簇号的低16位。
(12)28--31字节 32位的文件字节长度。

可是目录项中并没有你说的子目录信息,是不是我理解的有问题?
nustzhua
驱动中牛
驱动中牛
  • 注册日期2002-06-19
  • 最后登录2015-09-27
  • 粉丝0
  • 关注0
  • 积分18分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-11-12 09:37
每一个目录下面都有
.
..
两个子目录。

建议你找一个fat的资料(驱网里有),然后用disk32或则winhex自己手工找一遍文件,就知道怎么回事了。

相比较Ntfs来说,fat还是比较好办的。
不限容量的免费邮箱 www.k65.net
游客

返回顶部