Python 替换类似于文件系统的文件结构中的文件?

Python 替换类似于文件系统的文件结构中的文件?,python,file,filesystems,file-structure,Python,File,Filesystems,File Structure,我正在编写一个程序,提取并添加Xbox360的STFS文件。STFS结构是一个小型文件系统,它有哈希表、文件表等 提取文件非常简单。我有文件的起始块和文件中的块数量,所以我只需要找到块偏移量,读取块长度,并将其作为文件发送出去。但是,当我需要替换或删除文件时会发生什么情况?我已经读到,在Windows和计算机上,文件实际上并没有被删除,它们只是从文件表中删除,并在其他东西需要空间时被覆盖。当我写一个文件时,我如何找到一个足够大的块序列来保存它呢?这些块的长度为0x1000字节,并用空字节填充剩余

我正在编写一个程序,提取并添加Xbox360的STFS文件。STFS结构是一个小型文件系统,它有哈希表、文件表等

提取文件非常简单。我有文件的起始块和文件中的块数量,所以我只需要找到块偏移量,读取块长度,并将其作为文件发送出去。但是,当我需要替换或删除文件时会发生什么情况?我已经读到,在Windows和计算机上,文件实际上并没有被删除,它们只是从文件表中删除,并在其他东西需要空间时被覆盖。当我写一个文件时,我如何找到一个足够大的块序列来保存它呢?这些块的长度为0x1000字节,并用空字节填充剩余空间,因此一切都很顺利,但我想不出一种有效的方法来找到适合我要添加的文件的未使用块范围

我目前的计划是重写删除或添加文件时的所有内容,这样我就不会有大量未使用的空间,而无法确定如何覆盖。对于NTFS或FAT32这样的文件系统,有没有一个好的介绍,我可以阅读,它不需要几天就能理解,并且包含编写基本文件管理器所需的信息

结构参考:


编辑:第二步,我将为表中的每个文件创建一个范围列表。也就是说,开始偏移和结束偏移基于大小。在查找要插入文件的打开范围时,我将从0开始,检查每个范围的结束开始或结束是否在要插入的文件所需的范围内。如果起点或终点在该范围内,我将继续移动到另一个文件的终点偏移量的终点。这比我最初的想法要好,但似乎仍然效率低下。我必须对文件表中的每个文件进行多次比较。

参考:@DanD。谢谢,没有那一页我会迷路的。它解释了结构,但现在如何处理它。编辑:哦,我知道这是给别人的。打得好,我会更新OP的