//如果要读的文件已经在uof中 cmRead.readUof(userUof); list
for(it=userUof.begin();it!=userUof.end();++it) { if(it->fileName==s) { //找到了该文件,调用函数读取,并修改uof表 cmRead.readFileN(it->filePoint,n); it->readP+=n;
cmRead.reWriteUof(userUof); return 13;
}
}
//不在uof中 list
for(iu=userUfd.begin();iu!=userUfd.end();++iu) { count++;
if(iu->fileName==s) {
//找到该文件,先打开,更新uof uof ut; //文件属性在disk.txt中的位置
int position=usermfd.ufdLink*514+(count-1)*32+14; char *p=\为打开模式 ut.set(iu->fileName,position,p,n,0,2);
userUof.push_back(ut);//在uof表的最后添加一项 cmRead.readUof(userUof);//uof表重新写入disk
31
}
}
}
cmRead.readFileN(iu->fileFirstBlock,iu->fileLength,n); return 13;
cout<<\无该文件,请检查文件名!\\n\return 13;
int Chmod(string s,int n) {
//如果模式不满足要求0-2
if(n<0||n>2){cout<<\无该模式,模式0-readonly;1-writeonly;2-read/write,请核对输入
\
//否则继续 list
for(it=userUfd.begin();it!=userUfd.end();++it) {
if(it->fileName==s) {
it->fileMode=n+'0'; }
int Command::Create(string s,int n) {
}
}
cmRead.reWriteUfdTotal(userUfd,usermfd.ufdLink); cout<<\修改成功!\\n\return 12;
cout<<\无该文件!\\n\return 12;
//判断文件名是否存在
32
list
for(it=userUfd.begin();it!=userUfd.end();++it) { if(it->fileName==s)
{
cout<<\文件名已存在,不能创建!\\n\ return 11;
}
}
//添加文件到ufd表中 ufd temp;
char *f=\文件存在标志位, char *p;
p=(char*)s.c_str();//文件名,string不能直接赋值给char*,只能通过强制转换char m=n+'0';
int b=cmRead.getNewDataBlock(); cmRead.upDateFat(); temp.set(f,p,m,0,b); userUfd.push_back(temp);
cmRead.reWriteUfdTotal(userUfd,usermfd.ufdLink);
//添加信息到uof表中 uof ut; //文件属性在disk.txt中的位置
int position=usermfd.ufdLink*514+(userUfd.size()-1)*32+14; char *p2=\0为创建模式
ut.set(temp.fileName,position,p2,0,0,2);
userUof.push_back(ut);//在uof表的最后添加一项 cmRead.readUof(userUof);//uof表重新写入disk cout<<\创建成功!\\n\
33
}
return 11;
主要功能模块:
int Read(string s,int n);//读文件 int Open(string s,int n);//打开文件 int Write(string s,string t,int n);//写文件
运行结果:
主界面
Help 指令显示所有命令
34
建立文件
删除文件
35
总结:
尽管这段时间要忙于多门课程的复习,还是认真的做完了以上老师交给的任务. 首先获得的最大收获当然就是对于操作系统的内部原理的认识和学习. 从理论上了解后就开始实际编程实现这些算法, 这其中花了很多时间. 不过有语言和数据结构的基础基本的实现还是没有很大的问题. 但是由于以前写的都是不超过两百行的小型代码, 也没遇到过需要大量数据结构的封装的, 而编写这类程序则不同, 算法不会很难, 但是其中需要各种数据结构以及进行合理有效的连接等. 之前程序规划的不合理导致多次修改代码, 使得效率比较低下. 所以以后编写这类程序一定要事前想好各个数据结构以及模块功能, 然后想好该怎么实现接口等, 这样才能减少错误和提高效率.
36