2012-12-03 146 views
0

如果在fat16系统中,我很难区分子目录和文件。由于子目录和文件具有相似的结构,因此我们如何区分目录和文件以及如何遍历目录来访问文件?如何区分fat16中的目录和文件条目?

我最初认为所有的目录条目都以'0x2e'开始,作为fat16中8.3命名约定的第1个字节。但实际上我找不到所有以0x2e开头的目录,但直接找到目录的名称。 那么,如何区分目录和fat16中的文件?

+0

名称不是针对目录的指示器。请检查文件属性。 –

回答

2

目录在属性字段中设置了0x10位;文件不。第一个字节是“。” (0x2E)为自我和父目录,如果存在(它们不在根目录中)。

目录“文件”的内容是一个目录项的数组。

忽略长文件名,你搜索文件的方法是:从剩余路径

  1. SearchDirectory =根
  2. 解析过8.3名
  3. 的DirectoryEntry =查找8.3名SearchDirectory
  4. 如果剩余路径为空,则DirectoryEntry是请求的实体
  5. 如果Directory.Attribute&0x10 == 0,则ERROR(期待目录)
  6. SearchDirectory = DirectoryEntry.contents
  7. 转到2
+0

感谢您的信息 – sheeru

+0

您可以访问MSDN.microsoft.com获取格式的更多详细信息。 – MJZ