当前位置:首页 > 操作系统实验报告模板
printf(\ 文件夹./n\ } }
printf(\该目录下共有 %d 个文本文件, %d 个文件夹/n/n\
printf(\-----------\\n\\n\ return 1; }
/*---------在当前目录下删除文件-----------*/
int delfile(char *name) {
int i,temp,j;
//确保当前目录下有该文件,并且记录下它的FCB下标
struct dirFile *dir; //当前目录的指针
if(current==2)
dir=&(osPoint->root); else
dir=(struct dirFile *)(osPoint->data [current-3]);
for(i=1;i 文件 { if(dir->fcb[i].type==GENERAL && strcmp(dir->fcb[i].fname,name)==0) { break; } } if(i==BlockFcbCount) { printf(\当前目录下不存在该文件!\\n\ return 0; } int k; for(k=0;k if((openlist->f [k].type = GENERAL)&& (strcmp(openlist->f [k].fname,name)==0)) { if(openlist->f[k].fatherBlockNum == current) { break; } else { printf(\该文件未在当前目录下!\\n\ return 0; } } } if(k!=OPEN_MAX) { close(name); } //从打开列表中删除 temp=i; /*开始删除文件操作*/ j = dir->fcb [temp].currentBlockNum ; //查找盘块号j osPoint->FAT1[j]=osPoint->FAT2[j]=0; //fat1,fat2表标记为空白 char *p=osPoint->data[j - 3]; memset(p,0,BlockSize); //清除原文本文件的内容 dir->fcb[temp].initialize(); //type=0; //标记该目录项为空文件 printf(\---------------\\n\\n\ return 1; } /*--------System exit---------------------*/ int exit() { //将所有文件都关闭 //保存到磁盘上C:/myfiles fp=fopen(FilePath,\ fwrite(BaseAddr,sizeof(char),DiskSize,fp); fclose(fp); //释放内存上的虚拟磁盘 free(osPoint); //释放用户打开文件表 delete openlist; printf(\------------\\n\\n\ return 1; } /*-------------在指定的文件里记录信息---------------*/ int write(char *name) { int i; char *startPoint,*endPoint; //在打开文件列表中查找 file(还需要考虑同名不同目录文件的情况!!!) for(i=0;i if(strcmp(openlist->f [i].fname,name)==0 ) { if(openlist->f[i].fatherBlockNum ==current) { break; } else { printf(\该文件处于打开列表中,本系统只能改写当前目录下文件!\\n\ return 0; } } } if(i==OPEN_MAX) { printf(\该文件尚未打开,请先打开后写入信息!!\\n\ return 0; } int active=i; int fileStartNum = openlist->f[active].currentBlockNum - 3 ; startPoint = osPoint->data[fileStartNum]; endPoint = osPoint->data[fileStartNum + 1]; printf(\请输入文本以Ctrl D号结束:\\t\ char input; while(((input=getchar())!=4)) { if(startPoint < endPoint-1) { *startPoint++ = input; } else { printf(\达到单体文件最大容量!\ *startPoint++ = 4; break; } } return 1; } /*---------选择一个打开的文件读取信息----------*/ int read(char *file) { int i,fileStartNum; char *startPoint,*endPoint; //struct dirFile *dir; //在打开文件列表中查找 file(还需要考虑同名不同目录文件的情况!!!) for(i=0;i if(strcmp(openlist->f [i].fname,file)==0 ) { if(openlist->f[i].fatherBlockNum ==current) { break; } else { printf(\该文件处于打开列表中,本系统只能阅读当前目录下文件!\\n\ return 0; } } } if(i==OPEN_MAX) { printf(\该文件尚未打开,请先打开后读取信息!\\n\ return 0; } int active=i; //计算文件物理地址 fileStartNum = openlist->f[active].currentBlockNum - 3 ; startPoint = osPoint->data[fileStartNum]; endPoint = osPoint->data[fileStartNum + 1]; //end_dir=(struct dirFile *)[BlockSize-1]; //q=(char *)end_dir; printf(\该文件的内容为: \ while((*startPoint)!=4&& (startPoint < endPoint)) { putchar(*startPoint++); } printf(\ return 1; } /*当前目录下添加一个打开文件*/ int open(char *file)//打开文件 {
共分享92篇相关文档