• 大小: 235KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-16
  • 语言: 其他
  • 标签: 模拟  

资源简介

设计一个简单的磁盘文件管理系统,用文件模拟磁盘,用数组模拟缓冲区,要求实现: (1)支持多级目录结构,支持文件的绝对路径访问; (2)文件的逻辑结构采用流式(字节流)结构,物理结构采用链式结构中的显式链方式; (3)磁盘管理采用文件分配表; (4)实现文件操作命令:创建目录、列表目录、删除空目录、创建文件、删除文件、显示文件内容、打开文件、读文件、写文件(追加方式)、关闭文件、改变文件属性; (5)通过主函数对所实现的功能进行测试。

资源截图

代码片段和文件信息

#include 
#include 
#include 

#define Block_number 128
#define Block_size 64
//目录和文件的结构定义
typedef struct node

char name[50]; //目录或文件的名字 
int type; //0代表目录,1代表普通文件 
char state;//目录状态,$表示空目录~表示非空
int file_state;//文件状态,1表示open,0表示close
int file_size; //文件的大小 
int strat_number;//文件起始盘快号
char property[5];//r-表示只读,rw表示读写
char content[Block_number * Block_size];//文件的内容
char extension[10];//文件扩展名
struct node *next; //指向下一个兄弟结点的指针
struct node *sub; //指向第一个子结点的指针 
struct node *father; //指向父结点的指针 
}dirNode; 
//文件分配表结构定义
typedef struct Node
{
char name[50];//文件名
int start_number;//起始快号
int next_number;//文件存放位置的下一个块号
int number;//所在块号
int length;//长度
int state;//盘块记录,0表示可用,1表示占用,-1表示文件结束,其他值表示故障块
struct Node *next;
}*FAT;
//定义字符串结构
typedef struct
{
char data[100];
}string;
//记录已打开或建立的文件信息结构
typedef struct table
{
char path[100];//路径信息
char property[5];//r-表示只读,rw表示读写
int start_number;//起始块号
int length;//文件长度
char type;//o表示打开,c表示关闭
struct table *next;
}*Table;

dirNode *work;//工作目录
dirNode *root;//根目录
Table Info_t;//已打开或建立的文件信息表
FAT fat;//文件分配表带头结点
char path[100];//记录路径
int Is_copy = 0;//表示是否是复制指令,1是
int size = 0;//复制命令时的文件大小

//函数申明
void InitFAT();//初始化文件分配表
void InitDir();//初始化目录
void InitInfo_t();//初始化文件信息表
int Create_File(char way[]);//创建文件
void Open_File(char way[]);//打开文件
void Close_File(char way[]);//关闭文件
void Read_File(char way[]);//读文件
void Write_File(char way[]);//写文件
void Delete_File(char way[]);//删除文件
void Show_Content_File(char way[]);//显示文件内容
void Copy_File(char way1[]char way2[]);//复制文件
void Change_Property_File(char way[]);//改变文件属性
void Make_Dir(char way[]);//创建目录
void Show_Dir();//显示所有目录
void Delete_Dir(char way[]);//删除目录
void Change_Dir(char way[]);//改变工作目录
dirNode *Search(char way[]);//查找路径
int order(char command[]);//命令解析
void Help();//帮助函数

//初始化文件分配表
void InitFAT()
{
int i;
FAT filetabletemp;
fat = (FAT)malloc(sizeof(Node));
temp = fat;
for(i = 0;i < Block_number;i ++)
{
filetable = (FAT)malloc(sizeof(Node));
filetable->state = 0;
filetable->number = i;
filetable->next_number = -1;
filetable->start_number = -1;
filetable->length = -1;
strcpy(filetable->name““);
filetable->next = NULL;
temp->next = filetable;
temp = temp->next;
}
}
//初始化目录
void InitDir()
{
root = (dirNode*)malloc(sizeof(node));
strcpy(root->name“root“);
root->type = 0;
root->file_state = -1;
root->father = NULL;
root->next = NULL;
root->sub = NULL;
root->state = ‘$‘;
work = root;
strcpy(path“root“);
}
//初始化文件信息表
void InitInfo_t()
{
Info_t = (Table)malloc(sizeof(table));
Info_t->length = -1;
strcpy(Info_t->path““);
strcpy(Info_t->property““);
Info_t->start_number = -1;
Info_t->type = ‘c‘;
Info_t->next = NULL;
}
//创建文件
int Create_File(char way[])
{
int i = 0j = 0;
int file_size;//文件大小
int number;//文件所要的块数
char temp[Block_number * B

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2014-04-07 20:07  OS_Test3\
     目录           0  2014-04-07 20:07  OS_Test3\Debug\
     文件      200813  2013-06-26 20:59  OS_Test3\Debug\OS_Test3.exe
     文件      202864  2013-06-26 20:59  OS_Test3\Debug\OS_Test3.ilk
     文件      226524  2013-06-26 20:59  OS_Test3\Debug\OS_Test3.pch
     文件      386048  2013-06-26 20:59  OS_Test3\Debug\OS_Test3.pdb
     文件       48542  2013-06-26 20:59  OS_Test3\Debug\main.obj
     文件       33792  2014-02-23 22:48  OS_Test3\Debug\vc60.idb
     文件       45056  2013-06-26 20:59  OS_Test3\Debug\vc60.pdb
     文件        4304  2013-06-09 14:12  OS_Test3\OS_Test3.dsp
     文件         541  2013-06-09 14:11  OS_Test3\OS_Test3.dsw
     文件       58368  2014-02-23 22:49  OS_Test3\OS_Test3.ncb
     文件       53760  2014-02-23 22:49  OS_Test3\OS_Test3.opt
     文件         895  2013-06-26 20:59  OS_Test3\OS_Test3.plg
     文件       24781  2013-06-23 14:33  OS_Test3\main.cpp

评论

共有 条评论