操作系统实验-简单文件系统

File System

Posted by MetaNetworks on December 5, 2019
本页面总访问量

实验所有源代码(Github)

简单的文件系统

  • 能用模拟Terminal的形式进行读入写入
  • 能使用以下指令
    • format格式化、rm删除文件、create文件、write写文件、read读文件、open打开文件、close关闭文件、mkdir创建目录、rmdir删除文件夹
  • 使用显示链接的形式
  • 输入错误进行报错

源代码

代码长,其中定义的数据结构请在上述源代码中获取

  • 主函数

    使用FileSystem封装整个系统,FileSystem中又包含FATFAT表、内存Buffer文件记录FPCB等类

    注意:为了方便,操作数固定要输入1个,而对于format操作没有操作数的,操作数任意写即可

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
/*
 * @Author: MetaNetworks
 * @Date: 2019-12-05 16:57:33
 * @LastEditors: MetaNetworks
 * @LastEditTime: 2019-12-05 18:11:48
 * @Description: MetaNetworks' Code
 */
#include <iostream>
#include "file_system.h"

using namespace std;
int main(){
    FileSystem fileSystem(1024);
    string op,value,extra;
    while (true){
        printf("FileSystem: %s > ",fileSystem.getCurrentFolder().c_str());
        cin>>op>>value;
        if(op == "format"){
            fileSystem.format();
        }
        else if(op == "rm"){
            fileSystem.rm(value);
        }
        else if(op == "create"){
            int length;
            printf("File Length:");
            cin>>length;
            fileSystem.create(value,length);
        }
        else if(op == "write"){
            printf("Input Content:");
            cin>>extra;
            fileSystem.write(value,extra);
        }
        else if(op == "read"){
            fileSystem.read(value);
        }
        else if(op =="open"){
            fileSystem.open(value);
        }
        else if(op == "close"){
            fileSystem.close(value);
        }
        else if(op == "ls"){
            fileSystem.ls();
        }
        else if(op =="mkdir"){
            fileSystem.mkdir(value);
        }
        else if(op == "rmdir"){
            fileSystem.rmdir(value);
        }
        else if(op == "cd"){
            fileSystem.cd(value);
        }
        else if(op == "exit"){
            break;
        }
        else{
            fprintf(stderr,"\nUnknown Operator.\n");
        }
        cout<<endl;
    }
    return 0;
}

执行效果

image-20191205190102021