文件管理 - 文件系统
操作系统第三次课程作业 - 文件系统
请勿删除可执行程序目录下的BitMapInfo.txt
,CategoryInfo.txt
, MyDiskInfo.txt
, 及其他配置文件, 否则可能导致文件系统无法正常运行
项目需求
基本任务
在内存中开辟一个空间作为文件存储器,在其上实现一个简单的文件系统。
退出这个文件系统时,需要该文件系统的内容保存到磁盘上,以便下次可以将其恢复到内存中来。
功能描述
-
文件存储空间管理可采取显式链接(如FAT)或者其他方法。(即自选一种方法)
-
空闲空间管理可采用位图或者其他方法。如果采用了位图,可将位图和FAT表合二为一。
-
文件目录采用多级目录结构。至于是否采用索引节点结构,自选。目录项目中应包含:文件名、物理地址、长度等信息。同学可在这里增加一些其他信息。
-
文件系统提供的操作:
-
格式化
-
创建子目录
-
删除子目录
-
显示目录
-
更改当前目录
-
创建文件
-
打开文件
-
关闭文件
-
写文件
-
读文件
-
删除文件
-
项目目的
- 熟悉文件存储空间的管理;
- 熟悉文件的物理结构、目录结构和文件操作;
- 熟悉文件系统管理实现;
- 加深对文件系统内部功能和实现过程的理解
开发环境
-
开发环境: Windows 10
-
开发软件:
Visual Studio 2017 15.9.28307.665
-
开发语言: C#
项目结构
│ BitMapInfo.txt
│ CategoryInfo.txt
│ FileManageSystem.exe
│ FileManageSystem.exe.config
│ FileManageSystem.pdb
│ MyControl.dll
│ MyControl.pdb
│ MyDiskInfo.txt
│ README.md
│ 文件管理系统_设计方案报告.md
│ 文件管理系统_设计方案报告.pdf
│
├─Resources
│ │ file18.png
│ │ file25.png
│ │ fileopen48.ico
│ │ folder18.png
│ │ folder25.png
│ │
│ └─icon
│ help.ico
│ icon.ico
│ note.ico
│
└─src
│ Category.cs
│ FCB.cs
│ Program.cs
│ VirtualDisk.cs
│
└─Form
├─HelpForm
│ HelpForm.cs
│ HelpForm.Designer.cs
│ HelpForm.resx
│
├─MainForm
│ MainForm.cs
│ MainForm.Designer.cs
│ MainForm.resx
│
└─NoteForm
NoteForm.cs
NoteForm.Designer.cs
NoteForm.resx
操作说明
- 双击目录下
FileManagementSystem.exe
可执行文件进入文件系统模拟界面
-
请详细阅读操作帮助了解模拟器功能, 点击
我知道了
关闭帮助信息窗口 -
单击鼠标右键, 新建文件夹/新建文件
- 您也可以点击右侧按钮进行创建文件夹/文本文件
- 输入文件夹名或文件名, 即可在目录中查看到创建的文件夹/文件
- 在文件夹/文件上点击鼠标右键可选择打开/删除
- 单击文件夹可进入下一级文件夹, 上方可查看当前文件路径
- 单击文件可打开编辑窗口, 编辑完成后点击右上角的
X
, 确定以保存, 取消则直接退出
- 可查看文件相应信息(文件名, 上次修改日期, 文件大小*(自定义单位)*)
- 左侧的目录树可点击展开, 以查看当前目录结构
-
双击目录树中的文件夹打开文件夹, 双击目录树中的文件可打开文件进行浏览和编辑
-
点击返回上级目录可跳转到上级文件夹, 在root文件夹时无法返回
- 点击右侧格式化并再次确定可清空磁盘, 系统会清空所有文件夹和文本文件, 并清空目录树
- 受展示限制, 本文件系统模拟器在一个目录下最多可创建8个子项目, 超过8个时会受到系统提醒*(只是受展示方式限制, 物理和逻辑上的存储理论上都允许创建无限多的子项目)*
系统分析
显示链接法
本文件系统中, 文件存储空间管理使用显示链接的方法,文件中的内容存放在磁盘不同的块中,每次创建文件时为文件分配数量合适的空闲块。每次写文件时按顺序将文件内容写在相应块中; 删除文件时将原先有内容的位置置为空即可。
位图、FAT表
磁盘空闲空间管理在位图的基础上进行改造,将存放磁盘上文件位置信息的FAT表与传统的位图进行结合,磁盘空闲的位置使用EMPTY = -1
标识,放有文件的盘块存放文件所在的下一个盘块的位置,文件存放结束的盘块位置使用END = -2
标识。
系统设计
界面设计
主界面MainForm
- System.Windows.Forms.Button
- System.Windows.Forms.Label
- System.Windows.Forms.TextBox
- System.Windows.Forms.TreeView
帮助界面HelpForm
- System.Windows.Forms.Label
- System.Windows.Forms.Button
记事本界面NoteForm
- System.Windows.Forms.TextBox
功能实现截屏展示
帮助信息界面
新建文件/文件夹
打开/删除文件项
编辑文本文件
查看文件信息
展开目录树
返回上级目录
格式化磁盘
创建最大数量的文件项
受展示限制, 本文件系统模拟器在一个目录下最多可创建8个子项目, 超过8个时会受到系统提醒*(只是受展示方式限制, 物理和逻辑上的存储理论上都允许创建无限多的子项目)*
退出系统重新进入后恢复目录