操作系统作业 - 文件管理 - 模拟文件管理系统

操作系统作业-模拟文件管理系统

文末有源码

1. 项目需求

1.1 基本任务

在内存中开辟一个空间作为文件存储器,在其上实现一个简单的文件系统。

退出这个文件系统时,需要该文件系统的内容保存到磁盘上,以便下次可以将其恢复到内存中来。

1.2 功能描述

  • 文件存储空间管理可采取显式链接(如FAT)或者其他方法。(即自选一种方法)
  • 空闲空间管理可采用位图或者其他方法。如果采用了位图,可将位图和FAT表合二为一。
  • 文件目录采用多级目录结构。至于是否采用索引节点结构,自选。目录项目中应包含:文件名、物理地址、长度等信息。同学可在这里增加一些其他信息。
  • 文件系统提供的操作:
    • 格式化
    • 创建子目录
    • 删除子目录
    • 显示目录
    • 更改当前目录
    • 创建文件
    • 打开文件
    • 关闭文件
    • 写文件
    • 读文件
    • 删除文件

1.3 项目目的

  • 熟悉文件存储空间的管理;
  • 熟悉文件的物理结构、目录结构和文件操作;
  • 熟悉文件系统管理实现;
  • 加深对文件系统内部功能和实现过程的理解

2. 开发环境

  • 开发环境: Windows 10
  • 开发软件: Eclipse
  • 开发语言: JavaSE (jdk1.8.0_241)
  • 开发工具包: Swing

3. 项目结构

│  MyFileSystem.exe
│  MyFileSystem.jar
│  README.md
│  README.pdf
│  模拟文件管理系统-设计方案报告.pdf
│
├─myFileSystem(模拟系统文件夹,请勿删除)
│  │  ReadMe.txt
│  │
│  ├─1
│  │      1BitMap&&Fat.txt
│  │      recover.txt
│  │
│  ├─2
│  │      2BitMap&&Fat.txt
│  │      recover.txt
│  │
│  ├─3
│  │      3BitMap&&Fat.txt
│  │      recover.txt
│  │
│  ├─4
│  │      4BitMap&&Fat.txt
│  │      recover.txt
│  │
│  ├─5
│  │      5BitMap&&Fat.txt
│  │      recover.txt
│  │
│  ├─6
│  │      6BitMap&&Fat.txt
│  │      mojito.txt
│  │      recover.txt
│  │
│  ├─7
│  │      7BitMap&&Fat.txt
│  │      recover.txt
│  │
│  ├─8
│  │      8BitMap&&Fat.txt
│  │      recover.txt
│  │
│  └─9
│          9BitMap&&Fat.txt
│          recover.txt
│
└─src
    ├─image
    │      document.png
    │      folder.png
    │
    ├─Java
    │      Folder.java
    │      myFiles.java
    │      MyFileSystem.java
    │      tableModel.java
    │
    └─myFileSystem

4. 系统分析

4.1 显示链接法

本文件系统中, 文件存储空间管理使用显示链接的方法,文件中的内容存放在磁盘不同的块中,每次创建文件时为文件分配数量合适的空闲块。每次写文件时按顺序将文件内容写在相应块中; 删除文件时将原先有内容的位置置为空即可。

4.2 位图、FAT表

磁盘空闲空间管理在位图的基础上进行改造,将存放磁盘上文件位置信息的FAT表与传统的位图进行结合,磁盘空闲的位置使用0标识,放有文件的盘块存放文件所在的下一个盘块的位置,文件存放结束的盘块位置使用1标识。

5. 系统设计及实现

5.1 组件设计

  • 文件树:Java.Swing.JTree
  • 文件表:Java.Swing.JTable
  • 搜索板块
    • 搜索框:Java.Swing.JTextField
    • 提示语:Java.Swing.JLabel
    • 按钮:Java.Swing.JButton
  • 详细信息展示条:Java.Swing.JLabel

5.2 功能实现

5.2.1 创建文件

通过调用File类的createFile()来实现,创建后刷新FAT和位图,如果虚拟存储空间不够则会提示创建失败

JMenuItem createFileItem = new JMenuItem("新建文件");
createFileItem.addActionListener(new ActionListener() {
   
	@Override
	public void actionPerformed(ActionEvent e) {
   
		DefaultMutableTreeNode node =(DefaultMutableTreeNode)
            tree.getLastSelectedPathComponent();
		myFiles temp = (myFiles) node.getUserObject();
		int blokName = temp.getBlockName();
		Folder currentBlock = folders.get(blokName - 1);

		String inputValue;
		double capacity;

		JOptionPane inputPane = new JOptionPane();
		inputPane.setPreferredSize(new Dimension(600, 600));
		inputPane.setInputValue(JOptionPane.showInputDialog("文件名:"));
		if (inputPane.getInputValue() == null) {
   
			return;
		}
		inputValue = inputPane.getInputValue().toString();
		inputPane.setInputValue(JOptionPane.showInputDialog("文件大小(KB):"));
		if (inputPane.getInputValue() == null) {
   
			return;
		}
		capacity = Double.parseDouble(inputPane.getInputValue().toString());

		File newFile = new File(temp.getFilePath
  • 10
    点赞
  • 86
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值