把一个文本文件虚拟成磁盘,然后在这个基础上实现一个文件系统。
目前已经做好了文件目录的实现与存储,演示在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 的演讲。