基于javafx的模拟磁盘文件系统
好久没写博客了,今天有空写写,讲讲之前的操作系统课程设计,模拟的磁盘文件管理系统,说到模拟,这里做的是用一个二进制文件来模拟磁盘,里面分磁盘块,这里我简单梳理题目,方便大家理解使用。(源代码下载)
课程设计题目要求
总的需求:目录,文件的CRUD,要求树形结构,操作过程要模拟磁盘的存储过程;
1界面需求:
<1>要求有右键菜单
(1)系统的右键菜单:添加文件,添加目录
(2)文件的右键菜单:打开文件,删除文件,查看属性,修改属性(只读,可读写)
(3)目录的右键菜单:删除,打开目录
<2>系统要求:
(1)文件和目录的显示与操作和窗口类似。
(2)可以查看磁盘使用状况:磁盘块的使用情况(使用,未使用)
(3)界面友好:添加文件和目录时要有提示信息,
如文件名长度不超过3,不能包含“'$','。' ,'/'”字符
2后台需求:
<1>用一个文件模拟磁盘,磁盘分128块,每块64字节大小。
<2>用FAT表维护磁盘的储存状况:哪块磁盘块使用了,哪块磁盘块为空。
<3>文件内容的存储和取出要和真实磁盘操作一致,即:设置缓冲区,一次
存一块磁盘块,存满再申请下一块磁盘块。读取也是类似,取出文件内
容时是一块一块磁盘块取的。
<4>构造目录和文件的树形结构,每个目录下只能有8个子项(文件,目录)
系统的概要设计
1前端模块
<1>系统模块
显示磁盘使用情况按钮,系统关闭按钮,原始根目录下的八个子项
双击磁盘使用按钮:弹出128块磁盘块使用图,使用比例图
双击关闭按钮:保存当前操作,退出程序
右键系统非文件,目录区域可弹出新建文件,新建目录
<2>文件模块
右键文件可弹出菜单:打开文件,修改属性,删除文件
打开文件:双击文件,点击右键菜单打开文件
编辑文件:和窗口类似,编辑完自动保存。
<3>目录模块
右键目录可弹出菜单:打开目录,删除目录
打开目录:双击或者右键菜单
目录内容:和窗口类似,显示目录下的所有子项(文件,目录)
2后台模块:
<1>文件模块:
文件格式:这里只是TXT
存储位置:初始化用一个文件模拟磁盘,利用其128块,每块64B,文件分块存储
FAT表:初始化:利用模拟磁盘的那个文件,前面2块128B是FAT表的内容
用大小为128的数组模拟128块,记录每个文件的分块。
空余:0,文件尾:255,正常:记录下一个文件块
<2>目录模块
限制:一个目录下面只能有8个子目录/ 8个子文件
要求:树形结构:利用父节点和附属资源
<3>磁盘模块:
根据文件,目录的分块头编号检索FAT表,检索空内存,从而模拟申请内存,利用对象流写入,用64B的数组模拟一块磁盘位,要先写满数组模拟缓冲,再写入磁盘文件
主程序的流程图
各程序模块之间的层次关系
用户使用说明
使用环境:本程序是JAR包,所以需要的Java的的环境支撑,需要安装的Java的中,并设置双击的罐子即可打开运行本程序。
操作说明:
<1>用户第一次使用时,系统中是没有数据的,需要用户自己添加文件。
<2>操作类似的窗户,右键菜单可以新建文件,目录等。
<3>鼠标移到文件,目录上方时,右键可以弹出对应的菜单
<4>主界面上有一个关闭按钮,由于程序是全屏显示,如果用户要退出程序需要双击按钮,非正常退出数据会丢失。
<5>双击可编辑的文件,目录即可打开,进行编辑。
<6>用户下次打开程序时会自动读取上次保存的系统数据。
测试与运行结果
主界面
删除文件
打开文件
修改属性
打开目录
在目录中新建文件,目录
查看磁盘变化
变化前的磁盘使用情况
添加文件后,磁盘使用情况发生变化
删除目录后,磁盘使用发生变化