




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、本文档分别包含linux和windows两套程序一、课程设计的目的二、课程设计的内容及要求内容要求三、实现原理四、关键算法实现流程图流程图关键算法五、软件运行环境及限制六.结果输由及分析七.心得体会八.参考文献一.课程设计的目的本课程设计是学习完计算机操作系统课程后,进行的一次全面的综合训练,通过课程设计,让我更好地掌握操作系统的原理及实现方法,加深对操作系统基础理论和重要算法的理解,加强了我的动手能力。二.课程设计的内容及要求内容:为LINUX设计一个简单的二级文件系统。要求做到以下几点:1、可以实现下列几条命令(至少4条)。Login用户登录Dir列文件目录Create创建文件Delete
2、删除文件Open打开文件Close关闭文件Read读文件Write写文件2、列目录时要列出文件名、物理地址、保护码和文件长度。3、源文件可以进行读写保护。从课程设计的目的出发,通过设计工作的各个环节,达到以下教学要求:1、鼓励并优先个人独立选题设计,可从下面设计题目中选择,也可以自拟相关题目;如要合作,每组最多两名同学,且设计文档不能相同;2、可以在我们实验课最后布置的实验设计基础上进行完善和改进,但不能相同。3、题目选定后报给班长,班长要注意班级内题目的平衡,根据所选题目进行协调,不要都选一样的题。4、设计完成后报请老师答辩,答辩时不能对自己提供的设计进行讲解的同学,视为抄袭;5、要求写出一
3、份详细的设计报告(A4纸)。6、每位同学在周五将自己的设计报告和电子文档(包括报告和源程序)交给学习委员,并由学习委员统一刻盘后上交.实现原理首先,实现Login用户登录,(用户名:admin密码:admin)必须登录成功才能进入C:ProgramFiles),右侧显示文件夹图标或者文件图标,选中节点鼠标右击弹出菜单,有新建目录,新建文件,删除文件,打开文件,属性菜单项,并分别实现其功能。文件系统进行查看,进入后,通过树状展示文件目录(默认文件目四.关键算法实现流程图流程图:关键算法:1 .新建目录功能的实现privateclassMenuAction2implementsActionList
4、enerpublicvoidactionPerformed(ActionEventarg0)tryStringName=JOptionPane.showInputDialog("创建目录名称:”);if(!Name.equals("")/得到树状视图的被选择节点路径TreePathpath=tree.getSelectionPath();/得到树状视图的被选择节点MutableTreeNodenode=(MutableTreeNode)path.getLastPathComponent();/得到树状视图的模型类变量DefaultTreeModelmodel=(D
5、efaultTreeModel)tree.getModel();/新建子节点,标题为新目录名称MutableTreeNodenewNode=newDefaultMutableTreeNode(Name);/先展开树状视图,触发展开树状视图事件,给当前节点追加下级节点tree.fireTreeExpanded(path);/如果当前节点允许存在下级节点,则在树状视图的模型类变量中插入新子节点,位置是第一个,否则显示消息并退出该函数if(node.getAllowsChildren()model.insertNodeInto(newNode,node,0);elseJOptionPane.show
6、MessageDialog(null“不能给文件追加下级目录!");return;/得到被选择节点对应文件的完整路径信息StringfullPath=""for(Objectobj:path.getPath()Stringstr=obj.toString();/处理盘符根目录问题if(str.endsWith("")str=str.substring(0,str.length()-1);if(fullPath.equals("")fullPath+=str;elsefullPath+=""+str;Sys
7、tem.out.println("fullpath="+fullPath);/生成被选择节点对应的文件类变量FileparentDir=newFile(fullPath);/如果是目录,则新建相应的子目录if(parentDir.isDirectory()FilecurrentFile=newFile(fullPath+""+Name);currentFile.mkdir();elseJOptionPane.showMessageDialog(null文件名不能为空!");)catch(HeadlessExceptione)/TODOAuto-
8、generatedcatchblocke.printStackTrace();2 .新建文件功能的实现privateclassMenuAction5implementsActionListenerpublicvoidactionPerformed(ActionEvente)TreePathtp=tree.getSelectionPath();/得到被选择节点对应文件的完整路径信息StringfullPath=""for(Objectobj:tp.getPath()Stringstr=obj.toString();/处理盘符根目录问题if(str.endsWith("
9、;")str=str.substring(0,str.length()-1);if(fullPath.equals("")fullPath+=str;elsefullPath+=)StringFileName=JOptionPane.showInputDialog("创建文件名称:”);if(!FileName.equals(null)Filef=newFile(fullPath+""+FileName);tryf.createNewFile();catch(IOExceptione1)/TODOAuto-generatedcatch
10、blocke1.printStackTrace();elseJOptionPane.showMessageDialog(null,"文件名不能为空!");3 .删除功能的实现/内部类,响应快捷菜单的单击操作privateclassMenuActionimplementsActionListenerpublicvoidactionPerformed(ActionEvente)/得到树状视图的被选择节点路径TreePathtp=tree.getSelectionPath();/得到树状视图的被选择节点DefaultMutableTreeNodenode=(DefaultMuta
11、bleTreeNode)tp.getLastPathComponent();/从树状视图删除当前节点DefaultTreeModeldtm=(DefaultTreeModel)tree.getModel();dtm.removeNodeFromParent(node);/得到被选择节点对应文件的完整路径信息StringfullPath=""for(Objectobj:tp.getPath()Stringstr=obj.toString();/处理盘符根目录问题if(str.endsWith("")str=str.substring(0,str.lengt
12、h()-1);if(fullPath.equals("")fullPath+=str;elsefullPath+=/如果是文件,直接删除,如果是目录则调用deleteDir函数删除目录FilecurrentFile=newFile(fullPath);if(currentFile.isFile()currentFile.delete();elsedeleteDir(currentFile););/通过递归调用,可以删除目录的函数publicstaticbooleandeleteDir(Filedir)/判断是否为目录,如果是,则递归调用自己,如果不是,直接删除文件if(di
13、r.isDirectory()StringsubDir=dir.list();for(Strings:subDir)deleteDir(newFile(dir,s);returndir.delete();)4 .打开文件的功能实现即是Open_File这个类。5 .属性的功能实现取得路径名:TreePathtp=tree.getSelectionPath();/得到被选择节点对应文件的完整路径信息StringfullPath=""for(Objectobj:tp.getPath()Stringstr=obj.toString();/处理盘符根目录问题if(str.endsW
14、ith("")str=str.substring(0,str.length()-1);if(fullPath.equals("")fullPath+=str;elsefullPath+=""+str;)然后传入newProper(fullPath);属性详细实现即是Proper类。五.软件运行环境及限制运行环境:JDK1.6使用语言:Java编程工具:JBuilder2007自简单二级文件系统登陆界面用户名:密码:确定AtrtiV-菜单诜项:理支持图标项列表显示的树状视图文件资源管理器nC:沪巾。电EFlies资建目录;ktopA匚布
15、建交件n4匚珊除Hcatlon;»U'sToolbar*匚打开文件I证茗尸编o-CISttaCjinstansriieraUistalialloninformatlortanInternetExplorera口Javaa口Kingsofta口McAfeea口MicrosoftAcliveSynca口mlcrosonfrontpagea口MicrosoftOfficea口MicrosoftVisualStudioa口mcwiemakeradMSECacriP新建目录“小小”创建目录名称:小小输入确定撤消日支持图标项列表显示的树状视图3丁CAProgramFiles9口”dr自如
16、口必»AntiVirDesktopa口CommonFilescKL1amanmAJ3n新建潴图标J项列表显示的树状视图文件资源管理器QC:(PraQramFlies-p口Aviraa口AnW/irDesktop中口口小口小小a口ComrncnFilesa口ComPlusApplications9- ODAEMONToolsToolbar-小小a口DrCOM宽带口证客尸谪a口iLabaPlayeiu-口instaliShi?idInstallationInltormailona口internerE呼IqteanJavaa口KingscHo-口McAfeeaUMi(jrasaftActi
17、vsSynco-口micrascltfranlpagao-口MicrosaftOfficeo-口MicraeaftVisualStudio<1-匚3moviemaker*UMSECachao-mngamingzone®-口同讥加Batingo-口NortonAniftfirus|a口ONES删除“小小”目录及文件哥支持图标项列表显示的树状视图文件贲源管理器中口帆第Ettv”DesktopybLl*口Corr»口Corra口DAEfl-QDrC、口心ba口ln5te粕建目录新建文件IS旧ar阴瞰打开交件属性iiiiiHhiUiiiLdiitq口端iligiriInfor
18、matiunimCProgramFiles8口I。旭mgtEloreramJava8口Kingsoft蛇口McAf&ea口MicrosoftActivsSynca匚口microsqHfronipagoa口MicrosoftOfficea口MicrosoftVisualStudioa口moviemakeraMSECactis小小支持图标项列表显示的树状视图文件资源管理器o二CAProgramFilesArrtiV.嘛o-AntiVirDesktopa口CommonFilesa口ComPlusApplications©-DAEMONToolsToolbara匚3DrCOM费带认证
19、客户端o口ILabaPlayera口InstallShieldInstallationUnformatiio匚nInternetExplorer>口Javaa口Kingsoft0口McAfee»日MicrosoftActiveSync>口mlcrosoflfrontpagea口MicrosoftOfficea口MicrosoftVisualStudioo-口moviemakera口MSECachea口msngamingzone8口NetMeeling>口NortonAntMrus*II.I卜打开文件里打开查着二口桌面回直回回p我的支档口我的电脑口网上翎居口10703
20、030326壬维r-HfilesystemMJ2MEnJSTL_的anUtils_Strirts相关资料口QQ捱V1,5.2pistruts-1.2.bin口stnrts-i+2.9-src口家居Q新建交本文档.txt文件名:新建文本文档用文件类型:TJCT文件(A.txt)打开撤消z-备打开文件CGQ记孙建T心郁堂呢我然而到后来我什么都没有H当你离开的时候我想起了你给我的感动目想起我们之间的温柔我想起了我们第一次牵手我闭上眼想起当时你许下的承诺把你整个心都交给我U*1打开文件查看文件属性7工备查看文件属性0QO文件夹路径:C:lProgramFileslnstallShieldInstall
21、ationInf是否可读:true是否可写:true文件上次修改时间:2。09年05月及日11小时56分钟56秒文件是否被隐藏:trueIII7 .心得体会操作系统课程设计,自己通过查找资料、复习课本、编程调试,写实验报告等环节,进一步掌握了以前学到的知识,并且还对操作系统应用有了更深入的认识与掌握。比如对树的展示有了很好的学习,对二级文件系统也有了很好的了解,如何解决实现里面功能的各种问题。通过实践的学习,我认到学好计算机要重视实践操作,不仅仅是学习java语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机。8 .参
22、考文献1朱福喜,尹为民等编著.Java语言与面向对象程序设计.武汉:武汉大学出版社,2002.122陆昌辉,Java程序设计实用案例教程.北京:电子工业出版社,2008.53丁振凡,黎章等编著.Java语言实用教程.北京:北京邮电大学出版社,2005.84何桥,李肃义等编著.Java程序设计简明教程.北京:中国水利水电出版社,2004.9文件管理系统模拟1 .实验目的通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能及内部实现2 .实验内容为Linux系统设计一个简单的二级文件系统。要求做到以下几点:(1)可以实现下列几条命令(至少4条)login用户登录dir列文件目录create
23、创建文件delete删除文件open打开文件close关闭文件read读文件write写文件(2)列目录时要列出文件名、物理地址、保护码和文件长度;(3)源文件可以进行读写保护。3 .实验提小(1)首先应确定文件系统的数据结构:主目录、子目录及活动文件等。主目录和子目录都以文件的形式存放于磁盘,这样便于查找和修改。(2)用户创建的文件,可以编号存储于磁盘上。入file0,file1,file2并以编号作为物理地址,在目录中进行登记4.源代码#include<stdio.h>#include<string.h>#include<stdlib.h>#define
24、MEM_D_SIZE1024*1024/总磁盘空间为1M#defineDISKSIZE1024磁盘块的大小1K#defineDISK_NUM1024磁盘块数目1K#defineFATSIZEDISK_NUM*sizeof(structfatitem)/FAT表大小/最大写入文字长度128KBstructfatitem/*size8*/intitem;/*存放文件下一个磁盘的指针*/charem_disk;/*磁盘块是否空闲标志位0空闲*/;structdirect/*-文件控制快信息-*/#defineROOT_DISK_NOFATSIZE/DISKSIZE+1根目录起始盘块号#defineR
25、OOT_DISK_SIZEsizeof(structdirect)/根目录大小#defineDIR_MAXSIZE1024/路径最大长度为1KB#defineMSD5/最大子目录数5#defineMOFN5/最大文件深度为5#defineMAX_WRITE1024*128structFCBcharname9;/*文件/目录名8位*/charproperty;/*属性1位目录0位普通文件*/intsize;/*文件/目录字节数、盘块数)*/intfirstdisk;/*文件/目录起始盘块号*/intnext;/*子目录起始盘块号*/intsign;/*1是根目录0不是根目录*/directite
26、mMSD+2;);intrmdir(char*name);voiddir();intcd(char*name);voidprint();voidshow();structopentablestructopenttableitemcharname9;/*文件名*/intfirstdisk;/*起始盘块号*/intsize;/*文件的大小*/openitemMOFN;intcur_size;/*当前打文件的数目*/;structfatitem*fat;/*FAT表*/structdirect*root;/*根目录*/structdirect*cur_dir;/*当前目录*/一structopent
27、ableu_opentable;/*文件打开表*/intfd=-1;/*文件打开表的序号*/char*bufferdir;/*记录当前路径的名称*/char*fdisk;/*虚拟磁盘起始地址*/voidinitfile();voidformat();voidenter();voidhalt();intcreate(char*name);intopen(char*name);intclose(char*name);intwrite(intfd,charlen);intread(intfd,char*buf);intdel(char*name);*buf,intintmkdir(char*name
28、);voidinitfile()fdisk=(char*)malloc(MEM_D_SIZE*sizeof(char);/*申请1M空间*/format();voidformat()inti;FILE*fp;fat=(structfatitem*)(fdisk+DISKSIZE);/*计算FAT表地址,引导区向后偏移1k)*/*-初始化FAT表*/fat0.item=-1;/*引导块*/fat0.em_disk='1'for(i=1;i<ROOT_DISK_NO-1;i+)/*存放FAT表的磁盘块号*/fati.item=i+1;fati.em_disk='1
29、39;.fatROOT_DISK_NO.item=-1;/*存放根目录的磁盘块号*/fatROOT_DISK_NO.em_disk='1'for(i=ROOT_DISK_NO+1;i<DISK_NUM;i+)fati.item=-1;fati.em_disk='0'root->directitemi.sign=)/*/root=(structdirect*)(fdisk+DISKSIZE+FATSIZE);/*根目录的地址*/*初始化目录*/*指向当前目录的目录项*/root->directitem0.sign=1;root->direc
30、titem0.firstdisk=ROOT_DISK_NO;strcpy(root->,".");root->directitem0.next=root->directitem0.firstdisk;root->perty='1'root->directitem0.size=ROOT_DISK_SIZE;/*指向上一级目录的目录项*/root->directitem1.sign=1;root->directitem1.firstdisk=ROOT_DISK
31、_NO;strcpy(root->,".");root->directitem1.next=root->directitem0.firstdisk;root->perty='1'root->directitem1.size=ROOT_DISK_SIZE;if(fp=fopen("disk.dat","wb")=NULL)printf("Error:nCannotopenfilen");return;)for(
32、i=2;i<MSD+2;i+)/*-子目录初始化为空-*/0;root->directitemi.firstdisk=-1;strcpy(root->,"");root->directitemi.next=-1;root->perty='0'root->directitemi.size=0;)if(fp=fopen("disk.dat","wb")=NULL)printf("Error:nCannotopenfi
33、len");return;)if(fwrite(fdisk,MEM_D_SIZE,1,fp)!=1)/*把虚拟磁盘空间保存到磁盘文件中*/printf("Error:nFilewriteerror!n");)fclose(fp);)voidenter()FILE*fp;inti;fdisk=(char*)malloc(MEM_D_SIZE*sizeof(char);/*申请1M空间*/if(fp=fopen("disk.dat","rb")=NULL)(printf("Error:nCannotopenfilen&
34、quot;);return;if(!fread(fdisk,MEM_D_SIZE,1,fp)/*把磁盘文件disk.dat读入虚拟磁盘空间(内存)*/(printf("Error:nCannotreadfilen");exit(0);fat=(structfatitem*)(fdisk+DISKSIZE);/*找至UFAT表向址*/root=(structdirect*)(fdisk+DISKSIZE+FATSIZE);/*找到根目录地址*/fclose(fp);/*初始化用户打开表*/for(i=0;i<MOFN;i+)(strcpy(u_opentable.ope
35、,"");u_opentable.openitemi.firstdisk=-1;u_opentable.openitemi.size=0;u_opentable.cur_size=0;cur_dir=root;/*当前目录为根目录*/bufferdir=(char*)malloc(DIR_MAXSIZE*sizeof(char);strcpy(bufferdir,"Root:");voidhalt()(FILE*fp;inti;if(fp=fopen("disk.dat","wb")=NULL
36、)(printf("Error:nCannotopenfilen");return;if(!fwrite(fdisk,MEM_D_SIZE,1,fp)/*把虚拟磁盘空间(内存)内容读入磁盘文件disk.dat*/(printf("Error:nFilewriteerror!n");fclose(fp);free(fdisk);free(bufferdir);return;intcreate(char*name)(inti,j;if(strlen(name)>8)/*文件名大于8位*/return(-1);for(j=2卜MSD+2;j+)/*检查创
37、建文件是否与已存在的文件重名*/(if(!strcmp(cur_dir->,name)break;)if(j<MSD+2)/*文件已经存在*/return(-4);for(i=2;i<MSD+2;i+)/*找到第一个空闲子目录*/(if(cur_dir->directitemi.firstdisk=-1)break;)if(i>=MSD+2)/*无空目录项*/return(-2);if(u_opentable.cur_size>=MOFN)/*打亓文件太多*/return(-3);for(j=ROOT_DISK_NO+1;j&
38、lt;DISK_NUM;j+)/*找a空闲焉块j后退出*/(if(fatj.em_disk='0')break;)if(j>=DISK_NUM)return(-5);fatj.em_disk='1'/*将空闲块置为已经分配*/*填写目录项*/strcpy(cur_dir->,name);cur_dir->directitemi.firstdisk=j;cur_dir->directitemi.size=0;cur_dir->directitemi.next=j;cur_dir->directit
39、perty='0'/*-*/fd=open(name);return0;)intopen(char*name)(inti,j;for(i=2;i<MSD+2;i+)/*文件是否存在*/(if(!strcmp(cur_dir->,name)break;)if(i>=MSD+2)return(-1);/*是文件还是目录*/if(cur_dir->perty='1')return(-4);/*文件是否打开*/for(j=0;j<MOFN;j+)(if(!strcm
40、p(u_,name)break;)if(j<MOFN)/*文件已经打开*/return(-2);if(u_opentable.cur_size>=MOFN)/*文件打开太多*/return(-3);/*查找一个空闲用户打开表项*/for(j=0;j<MOFN;j+)if(u_opentable.openitemj.firstdisk=-1)break;/*填写表项的相关信息*/u_opentable.openitemj.firstdiskcur_dir->directitemi.firstdisk;strcpy(u_ope
41、,name);u_opentable.openitemj.size=cur_dir->directitemi.size;u_opentable.cur_size+;/*返回用户打开表表项的序号*/return(j);intclose(char*name)inti;for(i=0;i<MOFN;i+)if(!strcmp(u_,name)break;if(i>=MOFN)return(-1);/*清空该文件的用户打开表项的内容*/strcpy(u_opentable.openitemi.n
42、ame,"");u_opentable.openitemi.firstdisk=-1;u_opentable.openitemi.size=0;u_opentable.cur_size-;return0;intwrite(intfd,char*buf,intlen)char*first;intitem,i,j,k;intilen1,ilen2,modlen,temp;/*用$字符作为空格#字符作为换行符*/charSpace=32;charEndter='n'for(i=0;i<len;i+)if(bufi='$')bufi=Space
43、;elseif(bufi='#')bufi=Endter;/*读取用户打开表对应表项第一个盘块号item*/u_opentable.openitemfd.firstdisk;/*找到当前目录所对应表项的序号*/for(i=2;i<MSD+2;i+)if(cur_dir->directitemi.firstdisk=item)break;temp=i;/*-存放当前目录项的下标-*/*找到的item是该文件的最后一块磁盘块*/while(fatitem.item!=-1)item=fatitem.item;/*-查找该文件的下一盘块-*/*-计算出该文件的最末地址*/
44、first=fdisk+item*DISKSIZE+u_opentable.openitemfd.size%DISKSIZE;/*-如果最后磁盘块剩余的大小大于要写入的文件的大小*/if(DISKSIZE-u_opentable.openitemfd.size%DISKSIZE>len)strcpy(first,buf);u_opentable.openitemfd.sizeu_opentable.openitemfd.size+len;cur_dir->directitemtemp.size=cur_dir->directitemtemp.size+len;elsefor(
45、i=0;i<(DISKSIZE-u_opentable.openitemfd.size%DISKSIZE);i+)/*写一部分内容到最后一块磁盘块的剩余空间(字节)*/firsti=bufi;/*-计算分配完最后一块磁盘的剩余空间(字节)还剩下多少字节未存储*/ilen1=len-(DISKSIZE-u_opentable.openitemfd.size%DISKSIZE);ilen2=ilen1/DISKSIZE;modlen=ilen1%DISKSIZE;if(modlen>0)ilen2=ilen2+1;/*-还需要多少块磁盘块-*/for(j=0;j<ilen2;j+
46、)for(i=ROOT_DISK_NO+1;i<DISK_NUM;i+)/*寻找空闲磁卷块*/if(fati.em_disk='0')break;if(i>=DISK_NUM)/*-如果磁盘块已经分配完了-*/return(-1);first=fdisk+i*DISKSIZE;/*-找到的那块空闲磁盘块的起始地址-*/if(j=ilen2-1)/*-如果是最后要分配的一块-*/(for(k=0;k<len-(DISKSIZE-u_opentable.openitemfd.size%DISKSIZE)-j*DISKSIZE;k+)firstkbufk;else/
47、*-如果不是要最后分配的一块-*/(for(k=0;k<DISKSIZE;k+)firstk=bufk;fatitem.item=i;/*-找到一块后将它的序号存放在上一块的指针中-*/fati.em_disk='1'/*-置找到的磁盘快而空闲标志位为已分配-*/fati.item=-1;/*-它的指针为-1(即没有下一块)-*/*-修改长度-*/u_opentable.openitemfd.sizeu_opentable.openitemfd.size+len;cur_dir->directitemtemp.sizecur_dir->directitemte
48、mp.size+len;return0;intread(intfd,char*buf)(u_opentable.openitemfd.size;char*first;inti,j,item;intilen1,modlen;itemu_opentable.openitemfd.firstdisk;ilen1=len/DISKSIZE;modlen=len%DISKSIZE;if(modlen!=0)ilen1=ilen1+1;/*-计算文件所占磁盘的块数-*/first=fdisk+item*DISKSIZE;/*-计算文件的起始位置-*/for(i=0;i<ilen1;i+)(if(i=
49、ilen1-1)/*-如果在最后一个磁盘块-*/(for(j=0;j<len-i*DISKSIZE;j+)bufi*DISKSIZE+j=firstj;else/*-不在最后一块磁盘块-*/(for(j=0;j<len-i*DISKSIZE;j+)bufi*DISKSIZE+j=firstj;item=fatitem.item;/*-查找下一盘块-*/first=intlenfdisk+item*DISKSIZE;return0;intdel(char*name)(inti,cur_item,item,temp;for(i=2;i<MSD+2;i+)/*-查找要删除文件是否在
50、当前目录中-*/(if(!strcmp(cur_dir->,name)break;cur_item=i;/*-用来保存目录项的序E,供释放目录中-*/if(i>=MSD+2)/*-如果不在当前目录中-*/return(-1);if(cur_dir->directitemcur_perty!='0')/*-如果删除的(不)是目录-*/return(-3);for(i=0;i<MOFN;i+)/*-如果文件打开,则不能删除,退出-*/(if(!strcmp(u_,
51、name)return(-2);item=cur_dir->directitemcur_item.firstdisk;/*-该文件的起始盘块号-*/while(item!=-1)/*-释放空间,将FAT表对应项进行修改-*/(temp=fatitem.item;fatitem.item=-1;fatitem.em_disk='0'item=temp;/*释放目录项*/cur_dir->directitemcur_item.sign=0;cur_dir->directitemcur_item.firstdisk=-1;strcpy(u_opentable.ope
52、nitemcur_,"");cur_dir->directitemcur_item.next=-1;cur_dir->directitemcur_perty='0'cur_dir->directitemcur_item.size=0;return0;intmkdir(char*name)(inti,j;structdirect*cur_mkdir;if(!strcmp(name,".")return(-4);if(!strcmp(name,".")return(-4)
53、;if(strlen(name)>8)/*-如果目录名长度大于8位-*/return(-1);for(i=2;i<MSD+2;i+)/*-如果有空闲目录项退出-*/(if(cur_dir->directitemi.firstdisk=-1)break;if(i>=MSD+2)/*-目录/文件已#防-*/return(-2);for(j=2;j<MSD+2;j+)/*-判断是否有重名-*/(if(!strcmp(cur_dir->,name)break;if(j<MSD+2)/*-如果有重名-*/return(-3);for(j=ROOT_DISK_NO+1;j<DISK_NUM;j+)/*-找到空闲磁盘块j后退出-*/(if(fatj.em_disk='0')break;if(j>=DISK_NUM)return(-5);fatj.em_disk='1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业宿舍接待管理办法
- 代管院士津贴管理办法
- 企业人员病假管理办法
- 临时电梯使用管理办法
- 2025年陕西省中考数学试题卷(含答案详解)
- 智能型旋进旋涡流量计的结构优化及信号处理
- 城市双修理念下历史街区存量空间更新研究-以沈阳市铁西工人村为例
- 电子产品综合设计与制作 课件 项目3任务 (3)PCB导入与布局(设计实训)
- 2025年临汾市税务系统遴选面试真题带题目详解含答案
- 2025年中式烹调师技师理论知识试题库及答案(共270题)
- 橙色插画风部门纳新活动模板
- 起重作业安全知识考核试题(含答案)
- 2025至2030中国医疗头戴式显示器行业产业运行态势及投资规划深度研究报告
- 枪支安全管理培训课件
- 浙江省丽水市普通高中2024-2025学年高二上学期期末教学质量监控日语试卷(PDF版含答案不含音频和听力原文)
- 2025至2030电子海图行业产业运行态势及投资规划深度研究报告
- 小程序公司推广活动方案
- 公交车消防课件
- 厂家促销活动以旧换新活动方案
- 2025年湖北省中考英语试题(附答案)
- 2025中国系统性红斑狼疮诊疗指南解读课件
评论
0/150
提交评论