(6)删除文件delete_file(文件名) 开始删除路径名为name的文件查找该文件的目录项该文件存在?Y查找已打开文件表N文件不存在,无法删除文件结束N找到该文件?Y文件正在使用,不能删除t=文件起始盘块号结束删除该文件目录Y删除完?N结束t=下一个盘块回收盘块t
10
(7)显示文件内容(typefile) 结束显示路径名为name的文件查找目录name找到该文件?YY文件打开?N文件打开,显示文件失败dnum=该目录起始盘块号N指定的文件不存在,显示文件内容失败结束结束 第dnum块是该文件第一块?Y在已打开文件表中删除该文件登记项N结束dnum=FAT第dnum项
11
(8)目录操作命令:建立目录(md) 开始路径名为name将name分离成建立文件的目录路径名pathname和目录名dname找到该目录?Y目录项起始盘块号d第d块内容读入buffer1指定目录不存在,建立目录失败Nb=-1t=0结束查buffer2中第t个目录项第t项是目录项且名字是dnameN 第t项是空栏且b==-1?t=t+1YY指定的目录已存在,建立目录失败结束b=tNN第t项是该盘块最后一项?YN无空目录项目录中有空项b(b!=-1)?Y申请一个盘块dd结束申请磁盘块成功?Y初始化该块所有目录项为空目录项无空目录项建立失败N在第d块第b项建立该目录的目录:目录名fname、属性、起始盘块号dd、长度0;FAT表第dd项结束标志结束 12 (9)显示目录内容(rd) 开始显示路径名为name的目录查找目录name找到该目录?Y该目录项起始盘块号dnum;第dnum块内容读入buffer2N指定目录不存在,显示目录内容失败结束t=0查buffer2中第t个目录项第t个目录项为空项?t=t+1N显示目录内容YN第t项是该盘块最后一项?Y结束
13
五、详细代码
int sopen(char *name) //在已打开的文件表中查找文件name {
int i; i = 0;
while(i void dopen(char *name) //在已打开文件表中删除文件name { int i; i = sopen(name); if(i==-1) { { } if(i>=openfile.length) { } return i; return -1; i++; printf(\文件未打开\\n\ 14