【问题标题】:FAT32 - size of the root directoryFAT32 - 根目录的大小
【发布时间】:2013-12-27 18:22:39
【问题描述】:

我正在尝试解析 FAT32 的根目录以获取根文件夹中的目录列表。

所以我需要遍历根目录中的所有目录条目并解析它们。 我的问题是不知道何时停止迭代 - 如何获取根目录的大小?

我注意到引导扇区中有一个字节 - 根目录中的条目数 - 但在 FAT32 中该值始终为 0,那么我如何获得目录的大小?

【问题讨论】:

  • 你没有提到你正在使用什么编程语言。在创建解析器/循环之前先探索这样的替代方案不是更容易吗? (伪代码)var diskSize = RootFolder.TotalSize(); 如果您可以定义根路径并使用 .TotalSize() 之类的东西,假设它可以递归地工作以将所有子文件夹中的文件包含在内,为什么您认为您需要解析任何内容?
  • 欢迎来到 StackOverFlow.. :)

标签: parsing filesystems fat32


【解决方案1】:

根据定义,引导扇区地址 17 处的短整数对于 FAT32 为 0,仅对于较旧的 FAT 为非零。地址 44 处的整数应该将您指向根目录所在的第一个集群。 (该集群通常是集群 #2。)

对于 FAT32,您的代码应将根目录视为任何其他(非根)目录。

【讨论】:

  • 好的,所以我还是不明白如果我没有目录的大小,如何迭代FAT32中的根目录中的所有条目?
  • 好的。我仍然需要你的帮助.. 所以我遍历条目直到我得到 DIR_Name[0] == 0x00。它有效,但并非总是如此。我有一张 FAT32 的图像,我注意到他的一个目录条目 () 位于图像的中间。 (所以条目不是连续的)。奇怪的是,在我到达那个目录条目()之前我得到了 DIR_Name[0] == 0x00 ,因此错过了这个条目..有人想法吗?谢谢!
  • 您可能需要一个单独制定的问题,您可以在其中附加解析代码和 FAT32 的十六进制/二进制文本转储它不起作用的地方。如果不明确知道您是如何获得 DIR_Name 的,以及您如何知道确实有一个您似乎遗漏的目录条目,那么很难回答您的评论。
  • 根目录可以超过一簇吗?
  • 我认为 FAT32 的簇大小不可能小于 2KB。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-23
  • 2016-09-05
  • 1970-01-01
  • 2011-01-26
  • 2016-12-17
  • 2016-02-16
  • 2016-10-21
相关资源
最近更新 更多