操作系统课程设计,我参考了此链接,在此基础上修复了bug,改写了部分功能实现,也新增了复制粘贴文件功能实现。
在任一OS下,建立一个大文件,把它假想成一张盘,在其中实现一个简单的小型文件系统。并做一个简单的操作界面,提供五条简单的命令:dir、mkfile、type、copy、delfile,分别用于显示文件目录、建立文件、显示文件内容、复制和删除一个文件。同学可在这里增加一些其他信息。
开发环境: intellij 语言: Java
1.概要设计
文件存储空间管理采取显式链接(如FAT)或者其他方法。空闲空间管理采用位图,并将位图和FAT表合二为一。 文件目录采用多级目录结构。目录项目中包含:文件名、物理地址、 长度等信息
2.详细设计
盘区数量:3
盘区大小:1024KB
1.存储空间管理方式
FAT:在本次项目中,我的文件系统管理方案采用了显式链接的方式,在每一个盘区都开了一个文件用来存储当前盘 区所有存储块的使用情况。并记录盘区内所有文件所占用内存块的情况
优点:不存在内外内存碎片,最大程度地利用了盘区空间。
2.空闲空间管理方式
位图:在本次项目中,我的文件系统空闲空间管理方案采用了位图。使用一串0和1来标识内存块的状态。0为未使
用,1表示已经被占用。创建文件时从最前方开始检索空闲块,确定使用后将0置为1。 优点:一目了然,易于管理。
3.文件目录结构
多级目录结构
4.FCB
在该文件系统中,我创建了一个FCB类,存储了文件的相关信息,与JTree相结合,可在JTable中实时显示文件的大小、类型、修改时间等信息。
5.BitMap&&Fat.txt
该文件存储了盘区的存储块的状态,用0表示还未分配,1表示已经分配 该文件存储了盘区内存在的文件按照链接方式实现的的内存分配情况,列出了对应内存块的位置
6.recover.txt
该文件是当前盘区的备份文档,在再次启动该应用程序的时候通过读取该文件的信息还原出上次的运行状态,从而实现复盘
1.GUI实现显示文件目录 文件目录将呈现在程序的左侧,以十个以数字命名的盘为基目录。 点击文件夹左侧箭头可以将文件夹展开
2.创建文件
1 概述
选中某一文件后,右键展开功能选项,选择第一项生成文件或第二项就会弹出对话框要求键入文件名。 文件生成成功之后只要重新展开父目录就可以看到新生的文件。
2 实现方法
通过调用File类的createFile()方法来实现,文件创建成功之后将刷新FAT和位图,如果存储空间不足或是输入非法将 导致文件生成失败
3.删除文件
1 概述
选中某一文件后,右键展开功能选项,选择第三项删除即可删除所选项
2 实现方法
通过调用File类的delete()删除 针对文件夹需要递归删除,文件删除成功之后将刷新FAT和位图
4.复制文件
1 概述
选中某一文件后,右键展开功能选项,选择copy即可复制所选项
2 实现方法
点击复制选项后,程序将所选文件赋给全局变量,以便后续粘贴使用
5.粘贴文件
1 概述
选中某一文件后,右键展开功能选项,选择paste即可粘贴所选项
2 实现方法
点击粘贴选项后,程序将全局变量所保存的复制下来的文件以输入流的形式粘贴到目的地址
双击程序中右侧的显示面板中的文件即可打开对应文件