文件系统模拟实验

摘 要

        文件系统作为操作系统中最为重要的组成部分之一,它的主要功能就是对文件进行管理。文件系统位于操作系统的顶层。在操作系通的接口中文件系统扮演着十分重要的地位,他把我们使用计算机操作的抽象数据转换为能够在计算机物理设备上存放的具体数据,并且给我们提供访问和谐数据的结构和方法。本文主要介绍用java实现一个文件模拟的操作,主要功能有创建目录,删除目录,重命名目录,更改目录权限,显示目录结构,创建文件,  删除文件,重命名文件,显示文件内容, 更改文件内容,更改文件权限,退出。

        现代操作系统中都配备文件系统,以适应系统资源管理和用户使用信息的需要。我们做的这个系统论述了如何模拟实现一个文件系统,主要完成对文件与目录进行一些基本的操作功能。给出了模拟文件系统的数据结构设计和整体框架。

        完成了文件的整体功能,每个功能都涉及一定的算法,通过一个简单的文件系统的实现,理解文件系统的内部功能和内部实现;进一步理解操作系统;通过对实际问题的编程实现,获得实际应用和编程能力

1.1 环境需求

硬件:台式或者笔记本电脑

软件:1. window 10系统。

2. IntelliJ IDEA 2020.2 x64。
 

2.2 功能模块设计

  1. 创建目录
  2. 删除目录
  3. 重命名目录
  4. 更改目录权限
  5. 显示目录结构
  6. 创建文件
  7. 删除文件
  8. 重命名文件
  9. 显示文件内容
  10. 更改文件内容
  11. 更改文件权限
  12. 退出。

3.3 功能需求

  1. 文件模拟系统运行后弹出操作界面,展示出功能选项,提示用户输入后进行相应功能的操作。
  2. 创建好数据结构,设置相应的目录类和文件类,同时设计好父子目录、子文件,可读可写等权限的成员变量。
  3. 创建目录时输入当前目录名,判断是否存在此目录,若不存在显示“目录不存在”,则返回,若存在,便判断目录是否有可写权限,若没有,则显示“权限不够”后返回,若有权限,则要求用户输入新的目录名。判断输入目录名是否有同名目录,有则显示“目录重名”并返回,无则创建目录实例,与父目录和兄弟目录建立连接(若有),最后显示“创建成功”。
  4. 删除目录时输入删除的目录名,判断目录是否为根目录,若是则显示“根目录不能删除”,若不是则判断此目录是否存在,若不存在,则显示“目录不存在”后返回,若存在在判断是否有可写权限,权限不够则提示后直接返回,有权限的话断开与此目录的所有连接并释放空间,同时要更新父目录和兄弟目录连接,最后显示“删除成功”。
  5. 重命名目录流程输入原目录名,判断目标目录是否为根目录,若是,则显示“根目录不能重命名”,若不是在进行目录是否存在的判断,不存在则提示后返回,存在则输入新目录名,再对新目录名判断是否重名,若重名则提示更改失败,不重名则修改对应目录的目录名,最后提示成功。
  6. 更改目录权限需要输入目录名,判断目标目录是否为根目录,若是提示失败并返回,不是在进行目录存在判断,存在目录时提示输入新的读写权限,最后显示“更改目录权限成功”。
  7. 更改文件内容需要先输入文件名,判断文件是否存在,若不存在则提示失败后返回,存在时进行文件是否有可写的判断,权限不够则返回,权限满足提示输入修改的文件内容,最后修改此文件的文件内容,并提示更改问加内容成功。
  8. 显示目录结构,设计思想如下:设置一个rearholder当作指针,指向root的第一个孩子目录,若没有直接结束,若有孩子,设置外层循环,输入rearholder目录名和它的所有文件名,再判断当前目录的孩子目录是否为空,若不为空,rearholder指向孩子目录,继续下一循环,若为空再判断当前目录是有有同级目录,若有同级目录,rearholder则指向同级目录,否则rearholder指向父目录,再用一层循环判断是否有同级目录,没有则指向父目录,循环出来如果有同级目录,则指向同级目录,如此往复,则可以得到整个目录文件结构。
  9. 创建文件时输入当前目录名,判断是否存在此目录,若不存在显示“目录不存在”,则返回,若存在,便判断目录是否有可写权限,若没有,则显示“权限不够”后返回,若有权限,则要求用户输入新的文件名。判断输入文件名在此目录下是否有同名文件,有则显示“文件重名”并返回,无则创建文件实例,与父目录和兄弟文件建立连接(若有),最后显示“创建成功”。
  10. 删除文件时输入当前的目录名,判断此目录是否存在,若不存在,则显示“目录不存在”后返回,若存在在判断是否有可写权限,权限不够则提示后直接返回,有权限的话断开与此文件的所有连接并释放空间,同时要更新父目录和兄弟文件连接,最后显示“删除成功”。
  11. 重命名文件流程输入当前的目录名,进行目录是否存在的判断,不存在则提示后返回,存在输入需要重命名的文件 ,判断是否有此文件,如有再输入新文件名,判断新文件名判断是否重名,若重名则提示更改失败,不重名则修改对应文件的文件名,最后提示成功。
  12. 显示文件内容时输入当前的目录名,判断此目录是否存在,若不存在,则显示“目录不存在”后返回,若存在在判断是否有可读权限,权限不够则提示后直接返回,有权限则输出文件里的内容。
  13. 关闭系统,输入12后退出系统。

 测试用例和结果

1.初始化模块
 

1.初始化模块

2.创建目录folder1

 

3.创建文件再folder1里创建file1

4.重命名目录folder1为folder2

5.更改目录folder2权限

6.显示目录结构:创建三个目录和三个文件,镶嵌关系如图所示

7.删除目录root和folder2(root无法删除)

8.删除文件

9.重命名文件

10.显示文件内容

11.更改文件内容

12.更改文件权限

13.退出

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
模拟Linux文件系统。在任一OS下,建立一个文件,把它假象成一张盘,在其实现一个简单的 模拟Linux文件系统 在现有机器硬盘上开辟20M的硬盘空间,作为设定的硬盘空间。 2. 编写一管理程序对此空间进行管理,以模拟Linux文件系统,具体要求如下: (1) 要求盘块大小1k 正规文件 (2) i 结点文件类型 目录文件 (共1byte) 块设备 管道文件 物理地址(索引表) 共有13个表项,每表项2byte 文件长度 4byte 。联结计数 1byte (3)0号块 超级块 栈长度50 空闲盘块的管理:成组链接 ( UNIX) 位示图法 (Linux) (4)每建一个目录,分配4个物理块 文件名 14byte (5)目录项信息 i 结点号 2byte (6)结构: 0#: 超级块 1#-20#号为 i 结点区 20#-30#号为根目录区 3. 该管理程序的功能要求如下: (1) 能够显示整个系统信息,源文件可以进行读写保护。目录名和文件名支持全路径名和相对路径名,路径名各分量间用“/”隔开。 (2) 改变目录:改变当前工作目录,目录不存在时给出出错信息。 (3) 显示目录:显示指定目录下或当前目录下的信息,包括文件名、物理地址、保护码、文件长度、子目录等(带/s参数的dir命令,显示所有子目录)。 (4) 创建目录:在指定路径或当前路径下创建指定目录。重名时给出错信息。 (5) 删除目录:删除指定目录下所有文件和子目录。要删目录不空时,要给出提示是否要删除。 (6) 建立文件(需给出文件名,文件长度)。 (7) 打开文件(显示文件所占的盘块)。 (8) 删除文件:删除指定文件,不存在时给出出错信息。 4. 程序的总体流程为: (1) 初始化文件目录; (2) 输出提示符,等待接受命令,分析键入的命令; (3) 对合法的命令,执行相应的处理程序,否则输出错误信息,继续等待新命令,直到键入EXIT退出为止。
1. 在现有机器硬盘上开辟100M的硬盘空间,作为设定的硬盘空间。 2. 编写一管理程序simdisk对此空间进行管理,以模拟Linux文件系统,要求: (1) 盘块大小1k (2) 空闲盘块的管理:Linux位图法 (3) 结构:超级块, i结点区, 根目录区 3. 该simdisk管理程序的功能要求如下: (1) info: 显示整个系统信息(参考Linux文件系统的系统信息),文件可以根据用户进行读写保护。目录名和文件名支持全路径名和相对路径名,路径名各分量间用“/”隔开。 (2) cd …: 改变目录:改变当前工作目录,目录不存在时给出出错信息。 (3) dir …: 显示目录:显示指定目录下或当前目录下的信息,包括文件名、物理地址、保护码、文件长度、子目录等(带/s参数的dir命令,显示所有子目录)。 (4) md …: 创建目录:在指定路径或当前路径下创建指定目录。重名时给出错信息。 (5) rd …: 删除目录:删除指定目录下所有文件和子目录。要删目录不空时,要给出提示是否要删除。 (6) newfile …: 建立文件。 (7) cat …: 打开文件。 (8) copy …: 拷贝文件,除支持模拟Linux文件系统内部的文件拷贝外,还支持host文件系统模拟Linux文件系统间的文件拷贝,host文件系统文件命名为<host>…,如:将windows下D:盘的文件\data\sample\test.txt文件拷贝到模拟Linux文件系统的/test/data目录,windows下D:盘的当前目录为D:\data,则使用命令: simdisk copy <host>D:\data\sample\test.txt /test/data 或者:simdisk copy <host>D:sample\test.txt /test/data (9) del …: 删除文件:删除指定文件,不存在时给出出错信息。 (10) check: 检测并恢复文件系统:对文件系统的数据一致性进行检测,并自动根据文件系统的结构和信息进行数据再整理。 4. 程序的总体流程为: (1) 初始化文件目录; (2) 输出提示符,等待接受命令,分析键入的命令; (3) 对合法的命令,执行相应的处理程序,否则输出错误信息,继续等待新命令,直到键入EXIT退出为止。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

红黑兔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值