欢迎来到天天文库
浏览记录
ID:49712473
大小:91.50 KB
页数:15页
时间:2020-03-03
《简单文件系统实现.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、.#include#include#include#includeusingnamespacestd;#defineGENERAL1//1代表普通文件2代表目录文件0表示空文件#defineDIRECTORY2#defineZero0structFCB{charfname[16];//文件名chartype;//0空文件1目录文件2空文件intsize;//文件大小intfatherBlockNum;//当前的父目录盘块号intcurrentBlockNum;//当前的
2、盘块voidinitialize(){strcpy(fname," ");type=Zero;size=0;fatherBlockNum=currentBlockNum=0;}};constchar*FilePath="C:\myfiles";/*常量设置*/constintBlockSize=512;//盘块大小constintOPEN_MAX=5;//能打开最多的文件数constintBlockCount=128;//盘块数constintDiskSize=BlockSize*BlockCount;//磁盘大小64KconstintF
3、cbCount=BlockSize/sizeof(FCB);//目录文件的最多FCB数intOpenFileCount=0;//统计当前打开文件数目structOPENLIST//用户文件打开表{intfiles;//当前打开文件数FCBf[OPEN_MAX];//FCB拷贝OPENLIST(){files=0;for(inti=0;i4、结构---------------*/{structFCBfcb[FcbCount];voidinit(int_FatherBlockNum,int_CurrentBlockNum,char*name)//父块号,当前块号,目录名{strcpy(fcb[0].fname,name);//本身的FCBfcb[0].fatherBlockNum=_FatherBlockNum;fcb[0].currentBlockNum=_CurrentBlockNum;fcb[0].type=DIRECTORY;//标记目录文件for(inti=1;i5、Count;i++){fcb[i].fatherBlockNum=_CurrentBlockNum;//标记为子项fcb[i].type=Zero;//标记为空白项}}};structDISK/**********************************************************************/{intFAT1[BlockCount];//FAT1intFAT2[BlockCount];//FAT2structdirFileroot;//根目录chardata[BlockCount-3][BlockSi6、ze];voidformat(){memset(FAT1,0,BlockCount);//FAT1清零memset(FAT2,0,BlockCount);//FAT2清零FAT1[0]=FAT1[1]=FAT1[2]=-2;//0,1,2盘块号依次代表FAT1,FAT2,根目录区FAT2[0]=FAT2[1]=FAT2[2]=-2;//FAT作备份root.init(2,2,"C:\");//根目录区memset(data,0,sizeof(data));//数据区清零}};FILE*fp;//磁盘文件地址char*BaseAddr;//虚7、拟磁盘空间基地址stringcurrentPath="C:\";//当前路径intcurrent=2;//当前目录的盘块号..页脚..stringcmd;//输入指令structDISK*osPoint;//磁盘操作系统指针charcommand[16];//文件名标识structOPENLIST*openlist;//用户文件列表指针intformat();intmkdir(char*sonfname);intrmdir(char*sonfname);intcreate(char*name);intlistshow();intdelfil8、e(char*name);intchangePath(char*sonfname);intwrite(char*name);intexit();intopen(ch
4、结构---------------*/{structFCBfcb[FcbCount];voidinit(int_FatherBlockNum,int_CurrentBlockNum,char*name)//父块号,当前块号,目录名{strcpy(fcb[0].fname,name);//本身的FCBfcb[0].fatherBlockNum=_FatherBlockNum;fcb[0].currentBlockNum=_CurrentBlockNum;fcb[0].type=DIRECTORY;//标记目录文件for(inti=1;i5、Count;i++){fcb[i].fatherBlockNum=_CurrentBlockNum;//标记为子项fcb[i].type=Zero;//标记为空白项}}};structDISK/**********************************************************************/{intFAT1[BlockCount];//FAT1intFAT2[BlockCount];//FAT2structdirFileroot;//根目录chardata[BlockCount-3][BlockSi6、ze];voidformat(){memset(FAT1,0,BlockCount);//FAT1清零memset(FAT2,0,BlockCount);//FAT2清零FAT1[0]=FAT1[1]=FAT1[2]=-2;//0,1,2盘块号依次代表FAT1,FAT2,根目录区FAT2[0]=FAT2[1]=FAT2[2]=-2;//FAT作备份root.init(2,2,"C:\");//根目录区memset(data,0,sizeof(data));//数据区清零}};FILE*fp;//磁盘文件地址char*BaseAddr;//虚7、拟磁盘空间基地址stringcurrentPath="C:\";//当前路径intcurrent=2;//当前目录的盘块号..页脚..stringcmd;//输入指令structDISK*osPoint;//磁盘操作系统指针charcommand[16];//文件名标识structOPENLIST*openlist;//用户文件列表指针intformat();intmkdir(char*sonfname);intrmdir(char*sonfname);intcreate(char*name);intlistshow();intdelfil8、e(char*name);intchangePath(char*sonfname);intwrite(char*name);intexit();intopen(ch
5、Count;i++){fcb[i].fatherBlockNum=_CurrentBlockNum;//标记为子项fcb[i].type=Zero;//标记为空白项}}};structDISK/**********************************************************************/{intFAT1[BlockCount];//FAT1intFAT2[BlockCount];//FAT2structdirFileroot;//根目录chardata[BlockCount-3][BlockSi
6、ze];voidformat(){memset(FAT1,0,BlockCount);//FAT1清零memset(FAT2,0,BlockCount);//FAT2清零FAT1[0]=FAT1[1]=FAT1[2]=-2;//0,1,2盘块号依次代表FAT1,FAT2,根目录区FAT2[0]=FAT2[1]=FAT2[2]=-2;//FAT作备份root.init(2,2,"C:\");//根目录区memset(data,0,sizeof(data));//数据区清零}};FILE*fp;//磁盘文件地址char*BaseAddr;//虚
7、拟磁盘空间基地址stringcurrentPath="C:\";//当前路径intcurrent=2;//当前目录的盘块号..页脚..stringcmd;//输入指令structDISK*osPoint;//磁盘操作系统指针charcommand[16];//文件名标识structOPENLIST*openlist;//用户文件列表指针intformat();intmkdir(char*sonfname);intrmdir(char*sonfname);intcreate(char*name);intlistshow();intdelfil
8、e(char*name);intchangePath(char*sonfname);intwrite(char*name);intexit();intopen(ch
此文档下载收益归作者所有