fat32文件系统,关于目录项和文件遍历的问题

sirly22 2014-12-05 11:55:42
大家好,最近在学习fat32文件系统,编写文件恢复工具,有几个问题向大家请教

1、读取根目录: 我用lseek偏移 (32+2*单个fat大小)*512 读取出来的目录项信息是根目录第一个文件的目录项信息,这是为何?

2、这个时候,lseek从头偏移 (32+2*单个fat大小)*512+8*512 或者 (32+2*单个fat大小)*512 + 32 均读取不到下一个文件的目录项信息。(每个文件都小于1个簇,应该不需要读取fat表项吧?)

注:
测试环境是vmware + ubuntu 从物理机分配一个1G的硬盘加载到虚拟机,格式为fat32,名字为/dev/sdb,挂载到 /mnt/fat32test
...全文
351 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Cody2k3 2014-12-07
  • 打赏
  • 举报
回复
引用 楼主 sirly22 的回复:
大家好,最近在学习fat32文件系统,编写文件恢复工具,有几个问题向大家请教 1、读取根目录: 我用lseek偏移 (32+2*单个fat大小)*512 读取出来的目录项信息是根目录第一个文件的目录项信息,这是为何? 2、这个时候,lseek从头偏移 (32+2*单个fat大小)*512+8*512 或者 (32+2*单个fat大小)*512 + 32 均读取不到下一个文件的目录项信息。(每个文件都小于1个簇,应该不需要读取fat表项吧?) 注: 测试环境是vmware + ubuntu 从物理机分配一个1G的硬盘加载到虚拟机,格式为fat32,名字为/dev/sdb,挂载到 /mnt/fat32test
楼主注意由于long file name entry的存在,(reserved sector + 2 * fat size) * 512 +32 可能读到的并不是下一个directory entry,可以试下+64, 那些以0x41 开头的项基本是long file name entry
konglele 2014-12-06
  • 打赏
  • 举报
回复
第一个,“读取出来的目录项信息是根目录第一个文件的目录项信息”,有什么问题么 第二个,应该用(32+2*单个fat大小)*512 + 32吧,你读出来的是什么啊

23,125

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧