操作系统 文件存储空间管理(2)

2019-03-09 17:27

i_node[i].file_address[j]=physic[j]; }

break; } } }

void create_dir(char filename[]) //创建目录 {

style=0; //0代表文件类型是目录文件 create_file(filename,4);

style=1; //用完恢复初值,因为全局变量,否则 }

void del_file(char filename[]) //删除文件 {

int i,j,k;

for(i=0;i<640;i++) {

if(strcmp(filename,root[i].file_name)==0) {

k=root[i].i_num;

for(j=0;j

physic[j]=i_node[k].file_address[j]; }

callback(i_node[k].file_length); //调用 回收函数

for(j=0;j<100;j++) //删除文件后要将文件属性和目录项的各个值恢复初值 {

i_node[k].file_address[j]=-1; //地址恢复初值 }

strcpy(root[i].file_name,\ //文件名恢复初值

root[i].i_num=-1; //目录项的I结点信息恢复初值

strcpy(root[i].dir_name,\ //目录项的文件目录信息恢复初值 i_node[k].file_length=-1; //文件长度恢复 i_node[k].file_style=-1; //文件类型恢复初值 break; } }

if(i==640) {

printf(\不存在这个文件\\n\ }

}

void del_dir(char filename[]) //删除目录 需要判断目录下时候为空,不为空就不删除 {

int i,j,k;

for(i=0;i<640;i++) //还要加条件判断要删除的目录是不是当前目录 {

k=root[i].i_num; //找到目录名字 if( strcmp(root[i].file_name,filename)==0 && strcmp(cur_dir,filename)!=0 && (i_node[k].file_style)==0 ) {

for(j=0;j<640;j++) {

if(strcmp(filename,root[j].dir_name)==0) {

printf(\目录不为空不能直接删除\\n\ break; } }

if(j==640) {

del_file(filename); break; }

break; } }

if(i==640) {

printf(\这个不是目录文件 或者不存在这个目录,或者你要删除的是当前目录\\n\ } }

void display_curdir() //显示当前目录下的文件列表 {

int i,k;

printf(\文件名字 文件类型 文件长度 所属目录\\n\ for(i=0;i<640;i++) {

if(strcmp(cur_dir,root[i].dir_name)==0) //查询文件中 所在目录信息和当前目录信息相同的数据 {

k=root[i].i_num;

printf(\ %s\\t\ //文件名 printf(\ //文件的类型 printf(\ //文件的长度 printf(\ //文件所在的目录 } } }

void display_dir(char filename[]) //进入指定的目录 {

int i,k;

for(i=0;i<640;i++) {

k=root[i].i_num; //判断文件类型是不是目录类型

if((strcmp(filename,root[i].file_name)==0) && (i_node[k].file_style==0)) {

strcpy(cur_dir,filename); //将要进入的指定目录设置为当前目录strcpy(目的,源) break; } }

if(i==640) {

printf(\没有这个目录\\n\ } }

void open_file(char filename[]) //打开文件 {

int i,j,k;

printf(\文件名字 文件类型 文件长度 所属目录\\n\ for(i=0;i<640;i++) {

k=root[i].i_num;

if(strcmp(filename,root[i].file_name)==0 && (i_node[k].file_style==1)) {

printf(\ %s\\t\ //文件名 printf(\ //文件的类型 printf(\ //文件的长度 printf(\ //文件所在的目录 printf(\文件占用的物理地址\\n\

for(j=0;j

printf(\ \文件具体占用的盘块号 }

printf(\

赋值不要反了 break; } }

if(i==640) {

printf(\没有这个文件 或者这个文件不是正规文件\\n\ } }

void back_dir() //返回上一级目录 {

int i,k;

for(i=0;i<640;i++) //查询和当前目录名相同的目录文件名 {

k=root[i].i_num;

if(strcmp(cur_dir,root[i].file_name)==0 && (i_node[k].file_style==0)) {

strcpy(cur_dir,root[i].dir_name); //将查询到的目录文件名 所在的目录赋值给当前目录 } } }

void display_sys() //显示系统信息(磁盘使用情况) {

int i,m,k=0;

for(i=0;i<20449;i++) {

if(memory[i].a==0) k++; }

m=20449-k;

printf(\空闲的盘块数是:\\t\ printf(\

printf(\使用的盘块数是:\\t\ printf(\}

void help() //显示帮助信息

{printf(\以下是文件管理已分配盘块-------------------------------!\\n\

printf(\注意:创建的文件长度 < 100-----------------------------!\\n\说明文件 printf(\初始化-----------------------------------------format!\\n\ printf(\查看当前目录文件列表------------------------------dir!\\n\ printf(\查看文件--------------cat-----(cat + 空格 + 文件名) !\\n\ printf(\查看系统信息-----------------------------------ls !\\n\

printf(\创建目录--------------md------(md + 空格 + 目录名) !\\n\

printf(\创建文件---vi------(vi + 空格 + 文件名 + 文件长度) !\\n\ printf(\删除文件---------------del-----(del + 空格 + 文件名) !\\n\ printf(\删除目录----------------deldir--(del + 空格 + 目录名)!\\n\

printf(\进入当前目录下的指定目录-----cd--(cd + 空格 + 目录名)!\\n\ printf(\返回上一级目录--------------------------------cd.. !\\n\ printf(\显示帮助命令----------------------------------help !\\n\ printf(\退出文件模拟----------------------------------quit !\\n\ printf(\进入成组链接-----------------------------chengzu !\\n\ }

int MA[4]; /*空闲块数组*/

int A[9][4]={{3,1,2,3},{3,4,5,6},{0,0,0,0},{0,0,0,0},{3,0,7,8},

{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}}; /*磁盘空间*/ int mark[9]; /*存放已分配的块*/ int No=0; /*已分配的块数*/

void display1()

{ int i,j,temp,count; No=0;

if(MA[1]!=0) { i=MA[0];

printf(\ for(j=1;j<=i;j++)

{ printf(\ \ mark[++No]=MA[j]; } temp=MA[1]; count=2;

while(A[temp][1]!=0)

{ printf(\ i=A[temp][0]; for(j=1;j<=i;j++)

{ printf(\ \ mark[++No]=A[temp][j]; } count++;

temp=A[temp][1]; }

printf(\ i=A[temp][0];

for(j=2;j<=i+1;j++) if(A[temp][j]>0)

{ printf(\ \ mark[++No]=A[temp][j];


操作系统 文件存储空间管理(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2018年中国金属银市场调查及前景报告目录

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: