深圳建站模板建站,陕西建设信息网,企业网站备案时间,想建个图片网站文件系统管理项目说明文档
项目说明 基本任务 在内存中开辟一个空间作为文件存储器#xff0c;在其上实现一个简单的文件系统退出这个文件系统时#xff0c;需要该文件系统的内容保存到磁盘上#xff0c;以便下次可以将其回复到内存中来 具体要求 文件存储空间管理可采取链…文件系统管理项目说明文档
项目说明 基本任务 在内存中开辟一个空间作为文件存储器在其上实现一个简单的文件系统退出这个文件系统时需要该文件系统的内容保存到磁盘上以便下次可以将其回复到内存中来 具体要求 文件存储空间管理可采取链接结构如FAT文件系统中的显式链接等或者其他学过的方法空闲空间管理可采用位图或者其他方法文件目录采用多级目录结构目录项目中应包含文件名、物理地址、长度等信息需提供格式化创建子目录删除子目录显示目录更改当前目录创建文件打开文件关闭文件写文件读文件删除文件等操作
功能实现
各部分组件说明 顶部菜单栏提供了所有文件操作包括格式化保存增加/删除/重命名和关于教程 上方地址栏显示当前选中文件/文件夹绝对路径 左侧文件目录以树状结构展示文件架构 右侧文本编辑框实时显示选中文件的内容修改后点击下方SAVE按钮可保存 下方脚注显示当前选中文件/文件夹的信息 右键显示菜单 实现原理 构建一个FileSystem类见file_system_components.py可以模拟文件系统的各种操作其中 文件块用FCB类表示存储其名称、长度、创建时间、修改时间磁盘存储用Disk类表示文件组织方式采用链接方式中的FAT方法。代码中构建了一个FAT类以存储文件的链表存储结构。空闲区间用位图存储以FreeSpace类表示多级目录用FileTree表示其中 FileTreeNode为多级目录中的文件夹结点多级目录中的文件结点直接为FCB且一定为叶节点 增加文件时增加FCB块并加入到FileTree中写入时额外写入到磁盘Disk中同时将FreeSpace中对应位置赋值0 cur_index FAT_ENDwhile data ! :next_index self.find_free_index()if next_index -1:raise AssertionError(dont have enough space!!)if cur_index FAT_END:fcb.start_address next_indexelse:self.fat.table[cur_index] next_indexself.disk[next_index] data[:BLOCK_SIZE]data data[BLOCK_SIZE:]self.free_space.bitmap[next_index] SPACE_OCCUPYcur_index next_indexself.fat.table[cur_index] FAT_END删除文件同理 cursor fcb.start_address
if cursor is not None:while cursor ! FAT_END:self.disk[cursor] self.free_space.bitmap[cursor] SPACE_FREEnext_position self.fat.table[cursor]self.fat.table[cursor] SPACE_FREEcursor next_position构建对应的UI并用PyQt中的QTreeView模拟左侧的树结构每次操作后更新QTreeView中的model
运行方法 直接运行 已经通过pyinstaller生成了Windows上的可执行文件。 在Windows系统上点击file_system_main.exe即可运行程序 编译运行 Python version3.8 安装PyQt5和qt-material用来应用本程序所需的UI样式和bitarray用位图表示剩余空间 pip install PyQt5
pip install qt-material
pip install bitarray运行源码 python file_system_main.py运行截图 项目总结
项目亮点
采用PyQt5进行图形化开发并应用qt-material增加较多图标较为美观提供了菜单栏工具和右键选择菜单两种操作方式
改进方向
未来可以尝试采用别的文件管理策略