资源简介
C语言实现建议的虚拟文件系统,完成dir,mv,copy等命令,基于文件模拟一个电脑磁盘上的文件管理。C语言实现建议的虚拟文件系统,完成dir,mv,copy等命令,基于文件模拟一个电脑磁盘上的文件管理。
代码片段和文件信息
#include
#include
#include
#include
#include
#include
using namespace std;
#define MAX_SIZE 1024*1024 //虚拟磁盘最大存储容量 1M
#define MAX_BLOCK 20 //物理块的个数
#define MAX_DIR 5 //最大目录项的个数
struct Inode{
SYSTEMTIME create_t; //创建时间
string creator;//创建者
SYSTEMTIME modify_t; //文件或目录修改时间
int size;//文件大小
int addr;//数据块首地址
};
struct Dentry{
int inode_num;//i节点号
char name[20];//目录名称
};
typedef struct{
Dentry dentry[MAX_DIR]; //该目录下的目录项
int number; //目录项个数
char name[20]; //目录名称
Inode inode;
int num;//inode索引号
int parent;//父目录首地址(假设以inode号为标志)
char stat[10];//文件属性
//int flag;//标志该目录是否已删除;0没有;1已删除
}Direct;
Direct root; //根目录
Direct curr; //当前目录
Direct tab[1024];//目录表
int n=0; //当前已使用物理块的个数
int inodetab[MAX_BLOCK];//inode表,inode结点是否被用过0表示未被使用,1为已使用
string command;//命令
char* arg[10];//参数
char* arg2[10];//参数2
int a;//参数个数
int a2;//参数2个数
char route[50];//当前路径
SYSTEMTIME sys_t;//系统时间
void Initial()
{
root.number=0;
root.num=0;
strcpy(root.name“\\“);
strcpy(root.stat“DIR“);
root.parent=0;
root.inode.creator=“root“;
SYSTEMTIME sys;
GetLocalTime( &sys );
root.inode.create_t=sys;
root.inode.modify_t=sys;
root.inode.size=0;
root.inode.addr=1024*root.num;
curr=root;
tab[n]=root;
inodetab[n]=1;
n++;
}
void Refresh_tab()//完成tab的更新
{
}
void Write_new(Direct block)//将新的块占用写入虚拟磁盘
{
FILE *fp;
fp=fopen(“Virtul““rb+“);
if(fp==NULL) /*判断文件是否打开成功*/
puts(“File open error“);/*提示打开不成功*/
else{
if(-1 == (fseek(fpblock.num*sizeof(Direct)SEEK_SET)))
printf(“seek error\n“);
fwrite(&blocksizeof(Direct)1 fp);
}
fclose(fp);
}
void cat(char*str)//解析命令和参数
{
a=a2=0;
char *tmp1*tmp2;
tmp1=strtok(str“ “);
tmp2=strtok(NULL“ “);
tmp1=strtok(tmp1“\\“);
while(tmp1!=NULL)
{
arg[a]=tmp1;
tmp1=strtok(NULL“\\“);
a++;
}
tmp2=strtok(NULL“\\“);
while(tmp2!=NULL)
{
arg2[a2]=tmp2;
tmp2=strtok(NULL“\\“);
a2++;
}
}
void help()//帮助信息
{
char parameter[100];
scanf(“%s“parameter);
cat(parameter);
if(strcmp(arg[0]“cd“)==0)
{
cout<<“cd“< cout<<“显示目前工作目录的名称或是变更目录。“< cout<<“cd path“< cout<<“通过此命令,您可以修改当前的目录或路径,前往您想去的目录“< }
else if(strcmp(arg[0]“copy“)==0)
{
cout<<“copy“< cout<<“将一个文件拷贝到另一个文件。“< cout<<“copy source_file destination_path_file“< cout<<“通过此命令您可以按自身需要拷贝文件“< }
else if(strcmp(arg[0]“del“)==0)
{
cout<<“del“< cout<<“清空文件。“< cout<<“del file“< cout<<“通过此命令您可以按自身需要清空文件“< }
else if(strcmp(arg[0]“dir“)==0)
{
cout<<“dir“< cout<<“显示目录中的信息和子目录清单。“< cout<<“dir directory“< cout<<“通过此命令查看当前的目录信息“< }
else if(strcmp(arg[0]“exit“)==0)
{
cout<<“exit“< cout<<“结束CMD
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1888 2017-06-03 17:31 新建文件夹\实习\Debug\Virtul
文件 98304 2017-06-03 18:10 新建文件夹\实习\Debug\实习.exe
文件 577544 2017-06-03 18:10 新建文件夹\实习\Debug\实习.ilk
文件 797696 2017-06-03 18:10 新建文件夹\实习\Debug\实习.pdb
文件 44892160 2017-06-03 18:10 新建文件夹\实习\ipch\实习-7f57b56\实习-7e559c4a.ipch
文件 484 2017-06-03 18:10 新建文件夹\实习\实习\Debug\cl.command.1.tlog
文件 21938 2017-06-03 18:10 新建文件夹\实习\实习\Debug\CL.read.1.tlog
文件 180 2017-06-03 18:10 新建文件夹\实习\实习\Debug\CL.write.1.tlog
文件 960 2017-06-03 18:10 新建文件夹\实习\实习\Debug\li
文件 2632 2017-06-03 18:10 新建文件夹\实习\实习\Debug\li
文件 324 2017-06-03 18:10 新建文件夹\实习\实习\Debug\li
文件 249557 2017-06-03 18:10 新建文件夹\实习\实习\Debug\main.obj
文件 328 2017-06-03 18:10 新建文件夹\实习\实习\Debug\mt.command.1.tlog
文件 616 2017-06-03 18:10 新建文件夹\实习\实习\Debug\mt.read.1.tlog
文件 158 2017-06-03 18:10 新建文件夹\实习\实习\Debug\mt.write.1.tlog
文件 560128 2017-06-03 18:10 新建文件夹\实习\实习\Debug\vc100.idb
文件 299008 2017-06-03 18:10 新建文件夹\实习\实习\Debug\vc100.pdb
文件 381 2017-06-03 18:10 新建文件夹\实习\实习\Debug\实习.exe.intermediate.manifest
文件 47 2017-06-03 18:10 新建文件夹\实习\实习\Debug\实习.lastbuildstate
文件 19086 2017-06-03 18:10 新建文件夹\实习\实习\Debug\实习.log
文件 713 2017-05-31 09:44 新建文件夹\实习\实习\Debug\实习.vcxprojResolveAssemblyReference.cache
文件 0 2017-05-31 09:44 新建文件夹\实习\实习\Debug\实习.write.1.tlog
文件 20188 2017-06-03 18:04 新建文件夹\实习\实习\main.cpp
文件 1180 2017-06-03 18:31 新建文件夹\实习\实习\Virtul
文件 3216 2017-05-31 09:44 新建文件夹\实习\实习\实习.vcxproj
文件 953 2017-05-31 09:44 新建文件夹\实习\实习\实习.vcxproj.filters
文件 143 2017-05-31 09:23 新建文件夹\实习\实习\实习.vcxproj.user
文件 30363648 2017-06-03 18:33 新建文件夹\实习\实习.sdf
文件 885 2017-05-31 09:23 新建文件夹\实习\实习.sln
..A..H. 17920 2017-06-03 18:33 新建文件夹\实习\实习.suo
............此处省略11个文件信息
评论
共有 条评论