• 大小: 14.25MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-08-05
  • 语言: C/C++
  • 标签:

资源简介

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\link.command.1.tlog

     文件       2632  2017-06-03 18:10  新建文件夹\实习\实习\Debug\link.read.1.tlog

     文件        324  2017-06-03 18:10  新建文件夹\实习\实习\Debug\link.write.1.tlog

     文件     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个文件信息

评论

共有 条评论