列出根目录中的内容[C编程]

时间:2015-03-21 05:00:25

标签: c file ubuntu system

我正在寻找一种从“根目录”中提取数据的方法。

这是使用FAT 12软盘映像。这是使用Ubuntu版本14.04.2。

我希望能够读取根扇区中找到的根条目(根据我的理解这是扇区19-32),然后我希望能够显示存储在条目中的内容(文件名) ,目录名称)。这需要用于系统级编程。

traverse(){
    unsinged char buf[1000];
    int fd = open("CDBOOT1.IMG", O_RDONLY);
    lseek(fd, 19 * 512, SEEK_SET);
    read(fd, buf, 512);
}

我想了解一些有关如何解析buf数组中的信息以获取所需信息的信息。这是一个家庭作业,所以我不是在寻找具体的答案,但可能有一些资源如何做到这一点。

更新: 从建议,我使用了一些其他代码(已经由其他人编写),以便它将打印我试图从中获取根数据的扇区的HEX数据(如果有必要,我可以发布代码) 。使用HEX表,我仍然不确定如何解释数据以获取文件信息,目录信息,创建日期等。

2 个答案:

答案 0 :(得分:1)

我过去曾对FAT进行过一些解析。如果你不习惯它可能会很棘手。

我强烈建议的一件事是对你在C中读到的内容进行十六进制转储,并将其保存在一个文件中,然后将其放入一个好的十六进制编辑器中,这样你就可以验证算法是否正确事情按照你的预期布置。一切都交叉检查你从规范中获得了什么。

这是一个规范:

http://www.maverick-os.dk/FileSystemFormats/FAT12_FileSystem.html

答案 1 :(得分:1)

你真的在这里寻找两件事。 FAT包含表示集群和集群片段的数据。但您也想阅读DET(目录条目表)以获取类似名称和类似内容。

所以真的需要做的就是从这里开始:

http://en.wikipedia.org/wiki/File_Allocation_Table

并阅读这些内容的设计方法。即使是图像文件,这也不是简单或简单的代码。图像文件甚至可以在其中嵌入用于读取和写入的软件。