# FileSystem **Repository Path**: xiehou-design/file-system ## Basic Information - **Project Name**: FileSystem - **Description**: 一、设计目的 ① 使学生熟悉文件管理系统的设计方法。 ② 加深对所学各种文件操作的了解及其操作方法的特点。 ③ 让学生理解文件系统的设计思路。 二、设计内容 设计一个简单的多用户文件系统。即 ① 系统中用一个文件来模拟一个磁盘; ② 此系统至少有:Create、delete、open、close、read、write等和部分文件属性的功能。 ③ 实现这个文件系统。 ④ 能实际演示这个文件系统。 ⑤ 基本上是进入一个界面(此界面就是该文件系统的界面)后,可以实现设计的操作要求。 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 8 - **Forks**: 0 - **Created**: 2020-09-08 - **Last Updated**: 2024-12-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # FileSystem #### 介绍 一、设计目的 ① 使学生熟悉文件管理系统的设计方法。 ② 加深对所学各种文件操作的了解及其操作方法的特点。 ③ 让学生理解文件系统的设计思路。 二、设计内容 设计一个简单的多用户文件系统。即 ① 系统中用一个文件来模拟一个磁盘; ② 此系统至少有:Create、delete、open、close、read、write等和部分文件属性的功能。 ③ 实现这个文件系统。 ④ 能实际演示这个文件系统。 ⑤ 基本上是进入一个界面(此界面就是该文件系统的界面)后,可以实现设计的操作要求。 #### 软件架构 软件架构说明 (一)选定开发语言与开发工具 开发环境:eclipse IDE 2019-09 开发语言:Java (二)确定程序框架 文件系统主要分成两个部分,一部分为界面显示的UI、一部分为在UI现实的数据内容。为此我将其分成大概两个部分。利用已学习过的MVC框架,由于本次的实验没有什么control控制程序,我主要将其分成数据模型Mode和UI的View视图模型。 (三)根据设计内容确定实现方法 要设计一个文件系统:为此我们要模拟文件盘的空间大小。利用本级已有的内存空间为基础,利用程序来建立一个文件夹,作为类似于其它的系统的系统盘。 拥有Create、delete、open、close、read、write等和部分文件属性的功能。为此我应该在这个模拟的系统盘上能够点击文件夹进行对文件夹或者txt格式的文件进行添加、删除和重命名、甚至是文件加的格式化操作。所以,在Mode的程序文件中,应该包含create、delete、open、close、read、write等函数,在UI的操作中被点击触发时,则会引发该函数的执行操作,来实现某种相应的函数功能。 (四)根据内容来实现UI的设计 1.在系统图形可视化界面,应该有一个标题栏,表明这是一个文件系统,所以,我利用的Java自带的DefaultMutableTreeNode函数,实现了拥有一个“File System”的图形可视化标签。 2.首先作为文件系统,应该有一个搜索文件内容的搜索栏,能够快速地查找在文件中是否存在查找的文件夹或者文本文件,以及确定搜索的按钮。JPanel、JLabel、JButton、setPreferredSize、addActionListener、JOptionPane.showMessageDialog、setText等Java自带的函数库,对文件系统的文件进行一个整体性的查找,查找到则跳转;反之,则弹窗报错提醒。 3.文件目录栏:由于当前的文件系统,例如Windows、Linux、Mac、Unix等操作系统,都是采用文件目录树的形式来存储文件,并将一个文件的整体可视化效果放在可视化界面的左边,为此,我也采取了相同的设计效果。文件夹和文件拥有不同的保护级别。刚创建的文件系统产生的文件夹和文件是不能删除,例如根文件目录“user”文件夹、“userData.txt”和“recover.txt”文件是保护类型的,不能对其删除和重命名操作,这些文件具有特殊的含义,一旦更名文件系统将会崩溃,一旦退出文件系统,数据将不能实现保存。JScrollPane、JScrollPane、tableModel、JTable、JTree、JFileChooser、FileWriter、File等Java自带的函数库对其目录库进行修改;另外,我还自己编写了函数,来实现对文件目录更改的操作进行性更新,像deleteDirectory、getSpace、upDateBlock等对文件目录进行更新。并用Dimension(300, 200)来初始化文件目录的可视化界面大小。 4.主页面设计:参考其他的Windows文件系统设计内容,我将其主要分成五个属性,分别为文件名、文件类型、文件路径、文件大小和最近修改时间,在其下方有该目录下的各种文件夹和文本文件的名称的具体相关信息。我利用了一个tableModel的Java文件来专门对这一主业页面进行设计规划。其中主要利用了AbstractTableModel类,它是Java的函数库中自带的一个设计界面类;还加入了自己编写的添加行函数addRow、以及去除行函数removeRow等 5.提示行:为了使新学者能够更好地使用该文件系统,我们设置了提示的目录,将其放在界面的底端,并添加相应的文字,显示该文件系统的具体内存的消耗量,内存的剩余量,文件的数目。我具体使用了JPanel、setBackground、setLayout、setForeground、add等Java自带的库函数。 #### 设计框架 ![输入图片说明](https://images.gitee.com/uploads/images/2020/0908/101248_59cbffd4_8033522.jpeg "1.jpg") ![输入图片说明](https://images.gitee.com/uploads/images/2020/0908/101313_c2928e15_8033522.jpeg "2.jpg") ![输入图片说明](https://images.gitee.com/uploads/images/2020/0908/101333_e0a3aded_8033522.jpeg "3.jpg") ![输入图片说明](https://images.gitee.com/uploads/images/2020/0908/101347_bc62c667_8033522.jpeg "4.jpg") ![输入图片说明](https://images.gitee.com/uploads/images/2020/0908/101401_201301b9_8033522.png "5.png") #### 设计结果 ![输入图片说明](https://images.gitee.com/uploads/images/2020/0908/101459_3f586ecb_8033522.png "6.png") ![输入图片说明](https://images.gitee.com/uploads/images/2020/0908/101514_ea4a1460_8033522.png "7.png") ![输入图片说明](https://images.gitee.com/uploads/images/2020/0908/101526_b772c4d5_8033522.png "8.png") #### 码云特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. 码云官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解码云上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是码云最有价值开源项目,是码云综合评定出的优秀开源项目 5. 码云官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. 码云封面人物是一档用来展示码云会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) # 最重要的事 :grin: **记得点“start”哦,如果对你有帮助!!!!**