毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 课程设计 >> 正文

多用户多级目录文件系统的实现-操作系统 第4页

更新时间:2010-4-20:  来源:毕业论文
多用户多级目录文件系统的实现-操作系统 第4页
void Read(char *path)
{
 char display[BLOCK_SIZE];
 for (unsigned i = 0; i < FS.FI.FICount; i++)
 {
  if (!strcmp(FS.FI.FIStart[i].ParentName, CS.CurrParent->FileName)
&& FS.FI.FIStart[i].FileLevel == CS.FileLevel
&& FS.FI.FIStart[i].effect == 1
&& strcmp(FS.FI.FIStart[i].FileName, path) == 0)
  {
   FSElement *fselem = (FSElement *)
FindBlankFileBlock(FS.FI.FIStart[i].FileBlockId);
   if (fselem->fileStu == closed)
   {
    strcpy(display, "文件尚未打开,请先打开文件。\n");
   }
   else
   {
    if (!fselem->FileData || !strcmp(fselem->FileData, ""))
    {
     strcpy(display, "文件无内容。\n");
    }
    else
    {
     strcpy(display, fselem->FileData);  
    }
    fselem->fileStu = reading;
   }   
   break;
  }
 }
 if (strcmp(display, "") == 0)
 {
  strcpy(display, "当前目录下没有您要打开的文件。\n");
 }
 printf("%s\n", display);
 printf("[%s@localhost %s]$", CS.CurrentUser.UserName, CS.CurrentPath);
}
4.1.6文件的写:write
只支持在当前目录进行操作,前提是用户已执行文件打开的命令,否则会提示用户先打开文件。命令成功后,会等待用户的输入,用户输入完毕,使用CTRL+D,结束输入,系统会读入用户的输入内容,保存到相应的文件块(注意,如果用户的输入太多,会出现越界或截取用户输入一部分的现象)。
void Write(char *path)
{
 char display[BLOCK_SIZE];
 memset(display, '\0', BLOCK_SIZE);
 for (unsigned i = 0; i < FS.FI.FICount; i++)
 {
  if (!strcmp(FS.FI.FIStart[i].ParentName, CS.CurrParent->FileName)
&&  FS.FI.FIStart[i].FileLevel == CS.FileLevel
&& FS.FI.FIStart[i].effect == 1
&& strcmp(FS.FI.FIStart[i].FileName, path) == 0)
  {
   FSElement *fselem = (FSElement *)
FindBlankFileBlock(FS.FI.FIStart[i].FileBlockId);
   if (fselem->fileStu == closed)
   {
    strcpy(display, "文件尚未打开,请先打开文件。\n");
   }
   else
   {
    printf("\n注意:文件最大不可以超过 %d 字节!!按CTRL+D结
束编辑。\n", BLOCK_SIZE - sizeof(FSElement));
    char c;
    int i = 0;
    while ((c = getchar()) != 0x04)
    {
     display[i++] = c;
    }
    getchar(); //处理回车
    display[i] = '\0';
    strcpy(fselem->FileData, display); 
    unsigned len=strlen(display)<BLOCK_SIZE - sizeof(FSElement)
 ? strlen(display) :  BLOCK_SIZE - sizeof(FSElement);
    strncpy(fselem->FileData, display, len);
    fselem->fileStu = writing;
    strcpy(display, "文件写入成功。\n");
   }   
   break;
  }
 }
 printf("%s\n", display);
 printf("[%s@localhost %s]$", CS.CurrentUser.UserName, CS.CurrentPath);
}
4.1.7文件关闭:close
只支持在当前目录进行操作,通过用户给定的文件名在文件索引中搜索到文件的物理文件块ID,找到该文件元素后,将文件当前状态置为关闭。
void Close(char *path)
{
 char display[100];
 for (unsigned i = 0; i < FS.FI.FICount; i++)
 {
  if (!strcmp(FS.FI.FIStart[i].ParentName, CS.CurrParent->FileName)
&&  FS.FI.FIStart[i].FileLevel == CS.FileLevel
&& FS.FI.FIStart[i].effect == 1
&& strcmp(FS.FI.FIStart[i].FileName, path) == 0)
  {
   FSElement *fselem = (FSElement *)
FindBlankFileBlock(FS.FI.FIStart[i].FileBlockId);
   fselem->fileStu = opened;
   strcpy(display, "文件已关闭。\n");
   break;  }
 }
 if (strcmp(display, "") == 0)
 {
  strcpy(display, "当前目录下没有您要关闭的文件。\n");
 }
 printf("%s\n", display);
 printf("[%s@localhost %s]$", CS.CurrentUser.UserName, CS.CurrentPath);
}
4.1.8删除文件:delete
删除文件并不真正清理文件的物理存储内容,只是将文件的有效状态更改为无效。

上一页  [1] [2] [3] [4] [5] [6] 下一页

多用户多级目录文件系统的实现-操作系统 第4页下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©751com.cn 辣文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。