1、write 写文件cd 进出目录2列目录时要列出文件名,物理地址,保护码和文件长度3源文件可以进行读写保护【实验环境】C+DevCpp【设计思路】本文件系统采用两级目录,其中第一级对应于用户账号,第二级对应于用户帐号下的文件。另外,为了简便文件系统未考虑文件共享,文件系统安全以及管道文件与设备文件等特殊内容。首先应确定文件系统的数据结构:主目录、子目录及活动文件等。主目录和子目录都以文件的形式存放于磁盘,这样便于查找和修改。用户创建的文件,可以编号存储于磁盘上。如:file0,file1,file2并以编号作为物理地址,在目录中进行登记。结构体:typedef struct /*the str
2、ucture of OSFILE*/ int fpaddr; /*file physical address*/ int flength; /*file length*/ int fmode; /*file mode:0-Read Only;1-Write Only;2-Read and Write; 3-Protect;*/ char fnameMAXNAME; /*file name*/ OSFILE; /存放重要信息 typedef struct /*the structure of OSUFD*/ char ufdnameMAXNAME; /*ufd name*/ OSFILE ufd
3、fileMAXCHILD; /*ufd own file*/OSUFD; /用户下面的文件 typedef struct /*the structure of OSUFDLOGIN*/ /*ufd name*/ char ufdpword8; /*ufd password*/ OSUFD_LOGIN;typedef struct /*file open mode*/ int ifopen; /*ifopen:0-close,1-open*/ int openmode; /*0-read only,1-write only,2-read and write,3-initial*/OSUFD_OP
4、ENMODE;主要的函数说明:void LoginF(); /*LOGIN FileSystem用户登录*/void DirF(); /*Dir FileSystem列目录*/void CdF(); /*Change Dir改变目录*/void CreateF(); /*Create File创建文件*/void DeleteF(); /*Delete File删除文件*/void ModifyFM(); /*Modify FileMode修改*/void OpenF(); /*Open File打开文件*/void CloseF(); /*Close File关闭文件*/void ReadF
5、(); /*Read File读文件*/void WriteF(); /*Write File写文件*/void QuitF(); /*Quit FileSystem离开文件系统*/void help();其他重要函数:void clrscr() /清屏int ExistD(char *dirname) /*Whether DirName Exist,Exist-i,Not Exist-0*/ int ExistF(char *filename) /*Whether FileName Exist,Exist-i,Not Exist-0*/int FindPANo() /*find out ph
6、ysical address num*/void SetPANo(int RorW) /*Set physical address num,0-read,1-write*/void InputPW(char *password) /*input password,use * replace*/ char *ltrim(char *str) /*remove the heading blanks.去除左空白*/char *rtrim(char *str) /*remove the trailing blanks.去除右空白*/int WriteF1() /*write file相当于置换文件*/
7、程序流程说明:整体流程:开始Login(Name/Pw/Cpw)创建文件打开文件删除文件写更改目录修改文件属性读文件关闭文件退出系统清屏添加覆盖结束各部分功能流程:Open: Open获取文件名文件是否存在?(file0)文件名不存在获取文件置为打开状态并获取文件模式打开文件成功 N N YDelete:Delete主目录是否为空?Y确认删除文件在用户目录下!N用户是否在用户目录下? 只能修改用户目录下的文件!接收删除文件名文件被打开或被保护?Y打开或被保护状态不可删除获取物理块号文件向前移动删除文件,文件数减一删除文件成功!Write:Write用户是否在目录下?文件不存在! Y 确认该文件
8、被打开文件权限为只写或读写 N文件为只读和保护,不允许写!获取路径0追加,1覆盖?1追加文件写入成功!Close:Close请确认要关闭的文件是在用户目录下! Y罗列已经打开的文件获取物理地址文件是否处于关闭状态?该文件已被关闭 N文件成功关闭【源程序清单】void OpenF() /*Open File*/ printf(nnC:%s,strupr(dirname); /显示当前路径 int fcoun, i; /定义两个整形变量 char fnameMAXNAME, fmode25; /定义两个字符串变量 int fmod; /文件模式nPlease input FileName:); g
9、ets(fname); /接收打开文件的文件名 ltrim(rtrim(fname); /去除左右空白 if(ExistF(fname)0) /判断文件是否存在 /不存在 printf(nError.文件名 %s不存在n, fname); wgetchar=1; else /存在 i=ExistD(username); /获取用户物理信息 for(int a=0; a ufdfilea.fname)=0) /找到文件 fcoun=a; break; ifopenifcoun.ifopen=1; /将文件状态置为打开状态Please input OpenMode(0-Read Only, 1-Write Only, 2-Read and Write, 3-Protect): /打开文件模式 gets(fmode)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1