操作系统 - 文件管理系统模拟
本项目旨在实现一个简单的文件管理系统。在内存中开辟一个空间作为文件存储器,模拟操作系统磁盘管理,在项目退出时,需要该文件系统的内容保存到磁盘上,以便下次可以将其回复到内存中来。一个简单的文件系统,包括目录和文件,每个目录和文件都有其共同的属性,因此首先需要实现目录结构的定义。此外,文件有其内容,文件内容存储使用链式存储方式。程序需要实现的功能为: 显示分级目录,以及显示某目录下的所以文件,以及基本的创建文件,文件夹,删除文件,文件夹,复制,粘贴,剪切文件,文件读写,本地存储恢复。
将磁盘格式化,目录,文件清空,恢复原始设置。
在任意文件夹下可以创建目录,并更新UI,或者删除目录,删除目录会删除该目录下所有文件。目录以树形结构的方式来显示,可先点击树形目录切换到任意目录,显示该目录下所有文件及目录。
对于文件,可双击或右键打开,或者选择其它方式打开,打开文件后显示文件内容,可对其进行编辑修改,保存,删除等操作。
选中文件目录,右键菜单显示可对文件进行基本操作,在空白处右键,则显示对当前文件夹所能进行的操作。
点击查看属性,或者右键点击文件或者目录,选择属性菜单,可显示选中文件或目录信息,若未选中文件,则显示当前目录信息。
可对文件,或者目录进行重命名,重命名后更新文件路径以及子目录文件路径。
关闭程序后,对目录,文件内容进行保存,重新打开程序是读取文件,恢复目录结构并显示,以及恢复文件内容。
在程序底部显示程序磁盘空间使用情况。
可对文件进行复制,复制过程中先缓存一个复制文件,在粘贴时更改复制文件的相关属性,文件内容重新开辟空间;剪切文件则删除原来文件。
使用两个栈空间来记录前序操作文件夹,后续操作文件夹,可向前向后切换文件夹,也可返回上层目录。
实现搜索功能,现在当前目录级子目录下进行搜索,若没有结果,则在全文搜索文件,搜索结束显示搜索结果。
该系统使用C# WPF进行开发, VS 2015作为开发工具,运行在Window系统上。
如下图所示
目录结构采用树状结构目录,任意高度,存在根目录,每个文件都有唯一路径名。
本系统采用链接分配方式,目录包括文件第一块指针,每一块512B,后四个字节记录下一块的指针,最后一块后四位记为-1,每次读到-1则标记文件读取结束。
使用位向量管理空闲空间,0表示空闲,1表示已用。