我正在编写一个程序,可以将文件提取并添加到xbox 360的STFS文件中。 STFS结构是一个迷你文件系统,它有哈希表,文件表等。
提取文件非常简单。我有文件的起始块和文件中的块数,所以我只需要找到块偏移量,读取块长度,然后将其作为文件发送出去。但是,当我需要替换或删除文件时会发生什么?我已经在Windows和计算机上看到了这一点,文件实际上并没有被删除,它们只是从文件表中删除,并在其他需要空间时被覆盖。当我正在编写文件时,如何找到一个大到足以容纳它的未使用的块序列?这些块的长度为0x1000字节,并用空字节填充剩余空间,所以一切都很好,但我想不出一种有效的方法来找到适合我想要添加的文件的未使用的块范围。
我目前的计划是重写删除或添加文件的所有内容,以便我没有大量未使用的空间,我无法弄清楚如何覆盖。是否有一个很好的介绍文件系统,如NTFS或FAT32,我可以阅读,不需要几天了解,并将包含编写基本文件管理器的必要信息?
对结构的引用:http://free60.org/STFS
编辑:第二,但我会为表格中的每个文件创建一个范围列表。也就是说,基于大小的起始偏移和结束偏移。当寻找开放范围来插入文件时,我将从0开始并检查每个范围的结束开始或结束是否在要插入的文件所需的范围内。如果开始或结束在范围内,我将继续到另一个文件的结束偏移量的末尾。这比我最初的想法要好,但看起来仍然效率低下。我必须对文件表中的每个文件进行多次比较。