c++实现文件系统模拟设计

阅读操作系统方面的书籍,查询网络资料,了解操作系统的文件系统原理。通过c++语言实现文件系统模拟设计。完成的文件系统模拟设计主要是结合了widows和Linux操作系统的文件操作。在Windows下文件夹下可以包含文件夹和文件,而我们只能看到文件夹和文件的名字,默认情况下无法知道文件的具体信息,比如文件的大小,文件的所有者等等。在linux下通过指令ls -l可以知道该目录下的目录和文件,这些文件包括了文件所有者,文件所有组,文件大小,文件的权限等等;在完成文件系统模拟设计,通过dir()函数可以观察到目录和文件,文件显示了文件的权限,文件的所有者,文件的所有组,文件的模拟物理地址,文件大小等等。同时还设计了这些函数来实现文件系统模拟设计
createdir(); 创建子目录
deletedir(); 删除子目录
create(); 创建文件
deleted(); 删除文件
open(); 打开文件,主要是服务于read()和write()这两个函数
close(); 关闭文件
read(); 读取文件
write(); 向文件写入文件,存在两种情况,当文件为空时,可直接写入,当文件存在内容时,显示出存在的内容,然后在内容后追加写入的内容。

#include<iostream>
#include<vector>
#include<string>
#include<cstring> 
#include<algorithm>
#include<cstdlib>
#include<cstdio>
using namespace std;

//物理地址的起始位置
int addressstart = 1000;

//文件结构
struct document
{
   
    //文件名、物理地址、保护码和文件长度
    string name;
	//物理地址为连续的,以1000开始
    int address;
	//保护码用rwx表示
    string procode;
	//文件长度创建后默认为0
    int len;
	//存储写入的文件
	vector<string> vstr;
	//文件的所有者
	string usrname;
	//文件的所属组
	string usrgruop;
};

//目录结构
struct dirs{
   
	//目录名
	string dirname;
	//下一个目录作为子目录
	vector<dirs>    vdir;
	//该目录下的文件
	vector<document>  vdoc;
};


//以下是有关目录的有关操作
void dir(dirs d);
//创建子目录
void createdir(dirs &dparent);
//删除子目录
void deletedir(dirs &dparent);
//以下是文件的有关操作
void create(dirs & d);
void deleted(dirs & d);
int  open(dirs & d,document doc);
void close(dirs & d);
void read(dirs & d);
void write(dirs & d);
void menu();
void work(dirs &d);
int main()
{
   
	//创建一个root目录
    dirs d;
    d.dirname = "root";
    work(d);
    system("pause");
    return 0;
}

//显示文件的相关操作
void menu()
{
   
	printf("\t****************\n");
	printf("\t*  1.创建目录  *\n");
	printf("\t*  2.删除目录  *\n");
	printf("\t*  3.创建文件  *\n");
	printf("\t*  4.删除文件  *\n");
	printf("\t*  5.输入信息  *\n");
	printf("\t*  6.读取信息  *\n");
	printf("\t*  7.显示信息  *\n");
	printf("\t  *8.退出  *\n");
	printf("\t****************\n");
	
  • 1
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值