资源简介
可以实现下列几条命令:
Login 用户登录
Dir 列文件目录
Create 创建文件
Delete 删除文件
Open 打开文件
Close 关闭文件
Read 读文件
Write 写文件
Login 用户登录
Dir 列文件目录
Create 创建文件
Delete 删除文件
Open 打开文件
Close 关闭文件
Read 读文件
Write 写文件
代码片段和文件信息
#include “filesys.h“
int physic[100]; //文件地址缓冲区
int style=1; //文件的类型
char cur_dir[10]=“root“; //当前目录
void format() //格式化
{
int ijk;
super_block.n=50;
for(i=0;i<50;i++) //超级块初始化
{
super_block.free[i]=i; //存放进入栈中的空闲块
super_block.stack[i]=i+50; //存放下一组的盘块
}
for(i=0;i<640;i++) //i结点信息初始化
{
for(j=0;j<100;j++)
{
i_node[i].file_address[j]=-1;//文件地址
}
i_node[i].file_length=-1; //文件长度
i_node[i].file_style=-1; //文件类型
}
for(i=0;i<640;i++) //根目录区信息初始化
{
strcpy(root[i].file_name““);
root[i].i_num=-1;
strcpy(root[i].dir_name““);
}
for(i=0;i<20449;i++) //存储空间初始化
{
memory[i].n=0;
memory[i].a=0;
for(j=0;j<50;j++)
{
memory[i].free[j]=-1;
}
}
for(i=0;i<20449;i++) //将空闲块的信息用成组链接的方法写进每组的最后一个块中
{ //存储空间初始化
if((i+1)%50==0)
{
k=i+1;
for(j=0;j<50;j++)
{
if(k<20450)
{
memory[i].free[j]=k;//下一组空闲地址
memory[i].n++; //下一组空闲个数 注意在memory[i].n++之前要给其赋初值
k++;
}
else
{
memory[i].free[j]=-1;
}
}
memory[i].a=0; //标记为没有使用
continue; //处理完用于存储下一组盘块信息的特殊盘块后,跳过本次循环
}
for(j=0;j<50;j++)
{
memory[i].free[j]=-1;
}
memory[i].n=0;
}
printf(“已经初始化完毕\n“);
printf(“进入文件模拟.....\n\n“);
}
void write_file(FILE *fp) //将信息读入系统文件中
{
int i;
fp=fopen(“system““wb“);
for(i=0;i<20449;i++)
{
fwrite(&memory[i]sizeof(struct block)1fp);
}
fwrite(&super_blocksizeof(struct block_super)1fp);
for(i=0;i<640;i++)
{
fwrite(&i_node[i]sizeof(struct node)1fp);
}
for(i=0;i<640;i++)
{
fwrite(&root[i]sizeof(struct dir)1fp);
}
fclose(fp);
}
void read_file(FILE *fp) //读出系统文件的信息
{
int i;
fp=fopen(“system““rb“);
for(i=0;i<20449;i++)
{
fread(&memory[i]sizeof(struct block)1fp);
}
fread(&super_blocksizeof(struct block_super)1fp);
for(i=0;i<640;i++)
{
fread(&i_node[i]sizeof(struct node)1fp);
}
for(i=0;i<640;i++)
{
fread(&root[i]sizeof(struct dir)1fp);
}
fclose(fp);
}
void callback(int length) //回收磁盘空间
{
int ijkmq=0;
for(i=length-1;i>=0;i--)
{
k=physic[i]; //需要提供要回收的文件的地址
m=49-super_block.n; //回收到栈中的哪个位置
if(super_block.n==50) //注意 当super_block.n==50时 m=-1;的值
{ //super_block.n==50的时候栈满了,要将这个栈中的所有地址信息写进下一个地址中
for(j=0;j<50;j++)
{
memory[k].free[j]=super_block.free[j];
}
super_block.n=0;
memory[k].n=50;
}
memory[k].a=0;
if(m==-1)
{
m=49; //将下一个文件地址中的盘块号回收到栈底中,这个地址中存放着刚才满栈的地址的信息
}
super_block.free[m]=physic[i]; //将下一个文件地址中的盘块号回收到栈中
super_block.n++;
}
}
void allot(int length) //分配空间
{
int ijkmp;
for(i=0;i {
k=50-super_block.n; //超级块中表示空闲块的指针
m=super_block.free[k]; //栈中的相应盘块的地址
p=super_block.free[49]; //栈中的最后一个盘块指向的地址
if(m==-1||memory[p].a==1) //检测是否还有下一组盘块
{
print
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 33671 2009-06-25 22:44 myProject\Debug\c.obj
文件 38644 2009-07-01 17:39 myProject\Debug\fileSys.obj
文件 0 2009-07-01 17:39 myProject\Debug\fileSys.sbr
文件 58368 2009-07-01 17:39 myProject\Debug\myProject.bsc
文件 213083 2009-07-01 17:39 myProject\Debug\myProject.exe
文件 305008 2009-07-01 17:39 myProject\Debug\myProject.ilk
文件 229788 2009-07-01 17:39 myProject\Debug\myProject.pch
文件 508928 2009-07-01 17:39 myProject\Debug\myProject.pdb
文件 50176 2009-07-01 17:47 myProject\Debug\vc60.idb
文件 53248 2009-07-01 17:39 myProject\Debug\vc60.pdb
文件 7 2009-07-01 17:47 myProject\filename
文件 13409 2009-06-29 16:55 myProject\fileSys.cpp
文件 730 2009-06-29 16:05 myProject\fileSys.h
文件 33671 2009-06-25 22:44 myProject\myProject\Debug\c.obj
文件 38189 2009-07-01 17:37 myProject\myProject\Debug\fileSys.obj
文件 0 2009-07-01 17:37 myProject\myProject\Debug\fileSys.sbr
文件 58368 2009-07-01 17:37 myProject\myProject\Debug\myProject.bsc
文件 213083 2009-07-01 17:37 myProject\myProject\Debug\myProject.exe
文件 297560 2009-07-01 17:37 myProject\myProject\Debug\myProject.ilk
文件 229788 2009-07-01 17:36 myProject\myProject\Debug\myProject.pch
文件 508928 2009-07-01 17:37 myProject\myProject\Debug\myProject.pdb
文件 50176 2009-07-01 17:37 myProject\myProject\Debug\vc60.idb
文件 53248 2009-07-01 17:36 myProject\myProject\Debug\vc60.pdb
文件 4 2009-06-29 17:01 myProject\myProject\filename
文件 13409 2009-06-29 16:55 myProject\myProject\fileSys.cpp
文件 730 2009-06-29 16:05 myProject\myProject\fileSys.h
文件 4378 2009-06-29 17:01 myProject\myProject\myProject.dsp
文件 541 2009-06-25 09:49 myProject\myProject\myProject.dsw
文件 58368 2009-07-01 17:38 myProject\myProject\myProject.ncb
文件 48640 2009-07-01 17:38 myProject\myProject\myProject.opt
............此处省略15个文件信息
评论
共有 条评论