simple-file-system

把一个文本文件虚拟成磁盘,然后在这个基础上实现一个文件系统。

目前已经做好了文件目录的实现与存储,演示在main函数里直接运行就可以。

目录使用树来实现,保存的时候转化为JSON格式保存在文件的前DIRECTORY_SIZE个字符内,后面开始的字符用于存放文件,这里注意这个文件的大小应该假设为固定的而不是无限的,这样才可以做后面的回收利用。

#define DIRECTORY_SIZE 5000

项目运行

这是一个XCode项目,只能用XCode打开

首先把项目根目录下的disk.txt放到一个合适的地方,然后在main函数的第一行里面把相应的路径填进去,这个作为我们的存储器。

由于演示方便,系统保存后可以保存到一个新的文件里面,在saveDir函数里,也可以改成和disk.txt文件一样的

还需要做的

文件存储

需要考虑文件用什么方式存储,书511页开始。存储后文件需要新增的attribute保存方式参考makeFile函数,可能需要通过新增几个attribute来记录文件信息的开始结束位置等。 注意在路径中每个项目用type区分目录(dir)和文件(file)。

只要考虑新增文件,不用考虑删除文件后释放的空间怎么处理,这个交给后一部分吧。

这个部分大概两个人来做吧。

资源回收

上面的文件存储中只考虑全新的资源,但实际上一个文件被删除后,它留下来的磁盘资源是可以回收再利用的,所以需要想个办法实现然后完善上一部分的代码。这个在书的519页。

命令实现

之前做好的功能在main中都是直接调用的,但是需要写成读取用户输入的方式,不如用户输入

mkdir home

实际上需要执行

fs.makeDir("home");

所以在main里面放一段死循环不断读取用户的操作,读到exit的时候退出。

这部分和File System没有太大关系,所以还要加一个书522页 efficency and performance 的演讲。