• 大小: 19KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-05-29
  • 语言: C/C++
  • 标签: 文件管理  

资源简介

简单的实现操作系统文件管理系统,能实现文件的或目录的增加,删除,修改名字,查找,工作目录的改变等简单的文件功能,很好用,欢迎下载。

资源截图

代码片段和文件信息

#include
#include
#include
#include
using namespace std;
// ******************目录和文件的结构定义******
typedef struct node
{
    char name[50]; /*目录或文件的名字*/
    int type; /*0代表目录,1代表普通文件*/
    struct node *next; /*指向下一个兄弟结点的指针*/
    struct node *sub; /*指向第一个子结点的指针*/
    struct node *father; /*指向父结点的指针*/
 
    int size; /*如果是文件则表示文件的大小*/
 
} dirNode;
 
dirNode *workDir; //定义当前工作目录
dirNode root; //定义根目录
typedef dirNode *btree;//复制文件是新建的根节点目录,
 
char path[100]; //定义路径信息
 
//初始化函数
void initial()
{
    strcpy_s ( root.name“root“ );//复制函数,后者复制到前者结尾
    root.type=0;
    root.next=NULL;
    root.sub=NULL;
    root.father=NULL;
    root.size=0;
 
    workDir=&root;
 
    strcpy_s ( path“root“ );
}
 
//初始化新结点函数
dirNode *init()
{
    dirNode *p;
 
    p=new dirNode;
 
    //strcpy_s ( root.name““ );
    root.type=0;
    root.next=NULL;
    root.sub=NULL;
    root.father=NULL;
    root.size=0;
 
    return p;
}
 
//1 进入子目录
void CD ( char dirName[] )
{
    dirNode *p;
    int flag=0;
int n=1;
 
    p=workDir->sub;
    if ( p==NULL )
    {
        cout<<“错误\““<    }
    else
    {
        while ( p&&(flag==0) )
        {
            if ( p->type==0 )
            {
                if ( !strcmp ( p->namedirName ) )//当二者是同一个目录时
                {
                    flag=1;
                    break;
                }
            }
if(flag==0)
p=p->next;
        }
        if ( flag==1 )
        {
            workDir=p;
            strcat_s ( path“\\ “ );//函数功能把后者添加到前者结尾
            strcat_s ( pathp->name );//记录路径
            cout<<“工作目录已进入\““<        }
        else
        {
            cout<<“错误\““<        }
    }
}
 
//2 创建文件
void CREATE ( char fileName[]int fileSize )
{
    int flag;
    dirNode *p1*q1;
    q1=new dirNode;

    strcpy_s( q1->namefileName );
    q1->sub=NULL;
    q1->type=1;
    q1->next=NULL;
    q1->father=workDir;
    q1->size=fileSize;
 
    p1=workDir->sub;
 
    if ( p1==NULL )
    {
        workDir->sub=q1;
        cout<<“\““<    }
    else
    {
        flag=0;
        while ( p1 )
        {
            if ( p1->type==1 )
            {
                if ( !strcmp( p1->namefileName ) )
                {
                    flag=1;
                    cout<<“错误\““<                }
            }
            p1=p1->next;
        }
        if ( flag==0 )
        {
            p1=workDir->sub;
            while ( p1->next )
            {
                p1=p1->next;
            }
            p1->next=q1;
            cout<<“\““<        }
    }
}
 
//3 删除文件
void DEL ( char fileName[] )
{
    dirNode *p*q;
    int flag=0;
 
    p=workDir->sub;
    if ( p==NULL )
    {

评论

共有 条评论