精华内容
下载资源
问答
  • 一级文件二级文件三级文件夹
    千次阅读
    2020-12-15 20:07:23

    使用场景
    需要建立一批文件夹或在所有子目录下建立指定三级文件夹
    用途
    快速建立指定文件夹
    示例运行效果
    在测试文件下的所有二级目录中分别建立1/2/3三个三级目录

    @echo off & title 批量给二级目录创建三级目录
    cd /d "%~dp0"
    ::设置要处理的主文件夹路径
    set Home= D:\测试
    ::设置要创建的文件夹,多个文件夹之间用英文逗号隔开,名称中如有空格,请加英文双引号
    set Folders=1,2,3
     
    cd /d "%Home%"
    for /d %%a in (*) do (
        for %%b in (%Folders%) do (
            md "%%~a\%%~b"
        )
    )
    pause
    

    bat文件生成方法
    新建txt文件,输入内容,另存为.bat,编码格式选择ANSI格式,双击文件即可运行
    在这里插入图片描述

    更多相关内容
  • 当前文件夹结构: 目标文件夹结构 总体来说,就是desk分为nomal_desk、office_desk ··· ···,每个分类中是不同的类型的desk,现在需要把nomal_desk、office_desk ··· ···等不同类型的desk模型图片统一...

    当前文件夹结构:
    在这里插入图片描述
    目标文件夹结构
    在这里插入图片描述
    总体来说,就是desk分为nomal_desk、office_desk ··· ···,每个分类中是不同的类型的desk,现在需要把nomal_desk、office_desk ··· ···等不同类型的desk模型图片统一放在desk文件夹当中。

    代码如下:

    import os
    import shutil
    
    # dir_path是初始文件夹路径
    def move_all_files(dir_path):
        if os.path.exists(dir_path):
          #   初始文件夹路径存在,获取文件夹中的所有文件
          path_list = os.listdir(dir_path)
          # 遍历所有文件
          for each_path in path_list:
           # 如果当前文件是文件夹,对当前文件夹重新执行move_all_files方法
           if os.path.isdir(dir_path+"\\"+each_path):
            src=dir_path+"\\"+each_path
            move_all_files(src)
           else:
            # 当前文件不是文件夹,获取文件后缀
            file_type = os.path.splitext(each_path)[1]
            # 设置一个flag,标志当前文件类型和要移动的文件类型是否一致
            selected = False
            # 如果一致或者没有给出指定类型,标志量为true
            if file_type == select_type or select_type == 'All':
             selected = True
            if selected:
             # 当前文件路径
             src_file = dir_path + "\\" + each_path
             # 目标文件路径
             des_file = des_pos + "\\" + each_path
             # 复制
             shutil.copyfile(src_file, des_file)
        else:
            print ("指定路径不存在")
    
    
    # 初始文件夹所在位置
    rootpath="C:\\Users\\Yi\\Desktop\\pic"
    # 目标文件夹所有位置
    rootpath1="C:\\Users\\Yi\\Desktop\\newpic"
    # 二级目录中所有文件夹的名称
    roomtypes=["bathroom","bedroom","child_room","dining_room","gym","kitchen","living_room","office"]
    # 三级目录中所有文件夹的名称
    filetypes=["All","Interactive"]
    for roomtype in roomtypes:
        for filetype in filetypes:
            # 需要复制文件的文件夹位置
            localpath = os.path.join(rootpath, roomtype, filetype)
            # 需要复制到的位置
            targetpath = os.path.join(rootpath1, roomtype, filetype)
            files = os.listdir(localpath)
            for dir in files:
                give_pos = os.path.join(localpath, dir)
                des_pos = os.path.join(targetpath, dir)
                # All 或者 指定文件后缀名
                select_type = 'All'
                # 创建目标文件夹
                if not os.path.exists(des_pos):
                    os.makedirs(rootpath1 + './' + roomtype + './' + filetype + './' + dir)
                # 移动文件
                move_all_files(give_pos)
    
    
    
    展开全文
  • rem 文件路径 set path=%%~ni for /f "delims=" %%j in ('dir /s /b /a:-d %%i\*.flv') do ( set full=%%~dpnxj set exten=%%~xj if /i "!isrun!"=="n" ( echo ren "!full!" "!path!!exten!" )...
  • 例如:我的主域名是www.aabb.com(对应的是我公司官网页面),我需要解析个新的二级域名join.aabb.com(用作添加公司招聘宣传页面所用) 、先登录阿里云账户,到主域页面,然后选择你所需要解析的主域名,点击...

    亲身试验出来的结果,可供大家参考:

    例如:我的主域名是www.aabb.com(对应的是我公司官网页面),我需要解析一个新的二级域名join.aabb.com(用作添加公司招聘宣传页面所用)

    一、先登录阿里云账户,到主域页面,然后选择你所需要解析的主域名,点击“解析”进入下一个页面:

    二、进入域名解析页面,进行二级域名解析 。点击添加记录,跳出以下模态框,进行添加选择,并确定完成;

    然后返回查看二级域名解析状态;

     三、新创建一个.htaccess文件,添加所需的二级目录文件指向:

    可先暂时创建一个txt文档,添加下面的代码,进行内容修改,替换你所需要绑定的二级域名和二级目录,然后传到网站根目录下再将txt格式改成为后缀为.htaccess的文件。

    (这里以之前的例子说明:主域名为www.aabb.com,解析的二级域名为join.aabb.com→即网站的前缀改变为join,我的二级目录文件夹为join,目录下面的首页为index.html)

    #开启伪静态功能
    RewriteEngine On
    
    #绑定所需的二级域名
    RewriteCond %{HTTP_HOST} ^(www.)?join.aabb.com$
    
    #绑定需指向的二级目录
    RewriteCond %{REQUEST_URI} !^/join/
    
    #下面两行不动
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    
    #改为要绑定的二级目录
    RewriteRule ^(.*)$ /join/$1
    
    #绑定二级域名
    RewriteCond %{HTTP_HOST} ^(www.)?join.aabb.com$
    
    # join二级目录 后面是首页文件demo.html,join.html, index.html,index.php……(根据你的实际情况而定)
    RewriteRule ^(/)?$ join/index.html [L]

    (注意:文件类型是.htaccess文件→把txt文件的后缀改掉就可以转换格式) 

    四、把二级域名绑定的文件(这里是名为join的文件夹)和.htaccess上传到服务器的根目录下

    (我这里是通过ftp的方式上传文件,上传到htcdocs文件夹下)

    上传成功(红色框内是刚上传的二级目录join文件夹和.htaccess文件,这里其余的是主域名下的文件)

     五、最后在浏览器上输入二级域名,就可以访问到其对应的页面了。

    展开全文
  • 文件夹是在共享盘里面,没有新增修改权限,所以创建bat文件执行的办法用不了的。 共享盘的话,直接cd 指定目录的话,是不会切换路径的的。 ![图片说明]...
  • 操作系统课程设计之二级文件系统演示

    万次阅读 多人点赞 2016-01-27 11:06:26
    操作系统课程设计之二级文件系统演示,纯手工编写,思维不算严谨,但对于课设而言,应该是够了,希望对大家有所帮助,也希望读者能给些意见,谢谢!!!

    其实,刚拿到这个题目时,我真的没有思路,随后我就对着老师的课设指导书进行研究,对二级文件系统的演示这个课题的每个要求进行分析,总算是有了思路。下面给出我的分析。
    文件系统演示
    一、课程设计目的
    使学生熟悉文件管理系统的设计方法;加深对所学各种文件操作的了解及其操作方法的特点。
    //既然是基于控制台的,我们可以更改颜色玩玩
    二、课程设计内容
    设计一个简单的多用户文件系统。即 //和后面一样,用结构体数组实现
    ①在系统中用一个文件来模拟一个磁盘; //switch语句或者if-else语句实现,既然这里说到了 用一个文件去模拟一个磁盘,换句话说,在你的课设里,必须要有磁盘空间分配的思路在里面,不然就不是模拟磁盘了。
    ②此系统至少有:Create、delete、open、close、read、write等和部分文件属性的功能。
    ③实现这个文件系统。 //文件系统要实现
    ④能实际演示这个文件系统。//cmd演示即可
    基本上是进入一个界面(此界面就是该文件系统的界面)后,可以实现设计的操作要求。

    三、课程设计指导
    1)设计一个10个用户的文件系统,每次用户可保存10个文件,一次运行用户可以打开5个文件。 //三个数组的大小分别为 10、10、5
    //一次运行用户最多可以打开5个文件如何实现? 在用户文件里面加变量判断,用户每打开一个就+1,
    //每次用户最多可保存10个文件如何实现? 很明显,同时保存我们是无法做到的,无论是谁,都无法做到,也就是说还是一个个保存的,那么同样可以设置变量判断。如果保存的较多,那么只好请用户单独关闭某些指定的文件。

    2)程序采用二级文件目录(即设置主目录MFD)和用户文件目录(UFD)。另外,为打开文件设置了运行文件目录(AFD)。 //存放各个用户目录的文件夹、用户目录
    //是说运行的所有文件用一个目录层次表示吗
    3)为了便于实现,对文件的读写作了简化,在执行读写命令时,只需改读写指针,并不进行实际的读写操作。 //整型的变量判断是否读写完成了 下面的pointer
    4)因系统小,文件目录的检索使用了简单的线性搜索。 //链表的顺序查找
    5)文件保护简单使用了三位保护码:允许读写执行、对应位为 1,对应位为0,则表示不允许读写、执行。 //标记变量即可实现
    6)程序中使用的主要设计结构如下:主文件目录和用户文件目录(MFD、UFD),打开文件目录(AFD)即运行文件目录,如图5.1所示。//主要的结构体设计

    还有MFD、UFD、AFD最好全部存到文件里面去,不然每次都要输入,十分麻烦,而且不能通过看文件 查看到自己的实验现象,着实不便。
    参考的数据结构设计如下
    struct TYPE_UFD //用户文件目录
    {
    string File_Name; //文件名
    bool Read; //读保护码,true为可读
    bool Write; //写保护码,true为可写
    bool Execute; //执行保护码,true为可执行
    int Length_File; //文件长度
    }; //用户文件目录和用户打开的文件目录是不是都各有自己的属性
    struct TYPE_MFD //主文件目录
    {
    string User_Name; //用户名
    TYPE_UFD *Pointer; //用户文件目录指针
    };
    //很明显,第三个结构体没有指针域,但我们是需要指针域的,还有下面红色部分可以合在一个整型变量里面的
    struct TYPE_AFD //打开文件目录
    {
    int File_ID; //打开的文件号
    boolRead;//读保护码,true为可读
    boolWrite;//写保护码,true为可写
    boolExecute;//执行保护码,true为可执行
    int Pointer; //读写指针
    };
    7)文件系统结构如图5.2所示
    //很明显,这里要用到的数据结构是 链表
        
    8)文件系统算法的流程图如图5.3所示。
                                
    图5.3文件系统算法的流程图
    //这里告诉了你 main函数的主要调用的函数顺序
    9)注意对于物理块的访问(包括访问指针,空闲位)需要经过输入输出,相当于通过定位对文件进行读写。打开文件目录(AFD)是在内存中,由打开文件时创建。
    好了,分析完了,就要开始编写代码了,下面附上我小小的代码,还有很多需要修改的地方,做的不好的地方,大神就请原谅,也希望多多指点我。
    先附上效果图:
                    

    头文件部分:
    #include<cmath>
    #include<ctime>
    #include<string>
    #include<conio.h>
    #include<fstream>
    #include<cstdlib>
    #include<iostream>
    #include<windows.h>
    using namespace std;
    
    typedef struct UFD
    {
    	string File_name;         //文件名
    	int Start;                //文件在磁盘存储空间的起始地址
    	int Protect;              //文件的属性
    	int File_length;           //文件的长度
    	int Max_File_length;         //文件的最大长度
    	struct UFD *next;
    }UFD,*UFD_ptr;
    
    typedef struct MFD
    {
    	string User_name;
    	string User_passwd;
    	UFD *Ufd_next;
    	int End;
    	struct MFD *next;
    }MFD,*MFD_ptr;
    
    typedef struct AFD
    {
    	string File_name;
    	int File_length;
    	int Start;
    	int Protect;
    	int Pointer;    //根据这个指针的值去完成用户的要求  读写指针
    	int Max_File_length;
    	struct AFD *next;
    }AFD,*AFD_ptr;
    源文件部分:
    #include"os_fss.h"
    
    #define MaxDisk 512*1024   //一个扇区512字节,假设有1024个扇区,模拟磁盘的大小
    int Max_User=10;
    int Max_Open=5;
    int Max_End=0;
    UFD_ptr pufd=NULL;
    MFD_ptr pmfd=NULL;
    AFD_ptr pafd=NULL;
    char User_name[30];   //存放当前用户的用户名
    char flag='n';
    char Disk_Size[MaxDisk];    //最后在打印输出的时候,用RWX表示即可
    
    typedef struct Disk_Table
    {
    	int Max_length;      //最大长度
    	int Start;          //开始位置
    }Disk_Node;
    Disk_Node Disk_Head;
    
    void Init_Disk()
    {
    	Disk_Head.Max_length=MaxDisk;
    	Disk_Head.Start=0;
    }
    
    bool Init_MFD()
    {
    	pmfd=(MFD *)new MFD;   //带头节点的单向链表
    	MFD *p=pmfd;
    	ifstream ifs("MFD.txt");  //文件的输入流对象
    	if(!ifs)
    	{
    		cerr<<"错误:无法打开文件"<<endl;
    		p->next=NULL;
    		p->Ufd_next=NULL;
    		return false;
    	}
    	while(!ifs.eof())
    	{
    		p->next=(MFD *)new MFD;
    		ifs>>p->next->User_name>>p->next->User_passwd>>p->next->End;  
    		if(p->next->End>Max_End)
    			Max_End=p->next->End;
    		p=p->next;
    		p->Ufd_next=NULL;
    		p->next=NULL;
    	}
    	ifs.close();
    	return true;
    }
    
    void Print_UFD()
    {
    	UFD *p=pufd->next;  
    	if(!p)
    	{
    		cout<<"抱歉,该用户没有创建任何文件,请先创建!!!"<<endl;
    		return ;
    	}
    	cout<<"文件名\t\t最大文件长度\t文件权限\t起始位置\t文件长度"<<endl;
    	while(p)
    	{
    		cout<<p->File_name<<"\t\t"<<p->Max_File_length;
    		if(p->Protect==0)
    			cout<<"\t\t"<<"---";
    		else if(p->Protect==1)
    			cout<<"\t\t"<<"r-x";
    		else if(p->Protect==2)
    			cout<<"\t\t"<<"rwx";
    		cout<<"\t\t"<<p->Start;
    		cout<<"\t\t"<<p->File_length<<endl;
    		p=p->next;
    	}
    }
    
    bool Init_UFD(char *name)
    {
    	ifstream ifs(name); 
    	pufd=(UFD *)new UFD;
    	UFD *p=pufd;
    	char temp[MaxDisk];
    	bool Index=false;
    	if(!ifs)
    	{
    		cerr<<"错误:无法打开文件"<<endl;
    		p->next=NULL;
    		return false;
    	}
    	while(!ifs.eof())
    	{
    		memset(temp,'\0',sizeof(temp));
    		p->next=(UFD *)new UFD;
    		if(!Index)
    		{	
    			pmfd->Ufd_next=p->next;
    			Index=true;
    		}
    		ifs>>p->next->File_name>>p->next->Max_File_length>>p->next->Protect>>p->next->Start>>p->next->File_length;
    		ifs>>temp;
    		if(temp[0]=='#')
    			temp[0]='\0';
    		for(int i=p->next->Start,j=1;j<=p->next->Max_File_length-1;i++,j++)
    		{
    			Disk_Size[i]=temp[j-1];
    			if(!Disk_Size[i])
    				break;
    		}
    		Disk_Head.Max_length-=p->next->Max_File_length;
    	//	Disk_Head.Start+=p->next->Max_File_length;
    		p=p->next;
    		p->next=NULL;
    	}
    	ifs.close();	
    	return true;
    }
    
    void Rename_File()
    {
    	string File_name;
    	UFD *temp=pufd;
    	char Index;
    SD:
    	cout<<"请输入文件的名字:"<<endl;
    	cin>>File_name;
    	while(temp)
    	{
    		if(temp->File_name==File_name)
    		{
    			cout<<"请输入新的文件名:"<<endl;
    			cin>>File_name;
    			temp->File_name=File_name;
    			break;
    		}
    		temp=temp->next;
    	}
    	if(!temp)
    	{
    		cout<<"抱歉,输入的文件不存在,无法完成重命名文件操作,是否继续操作<y/n>?"<<endl;
    		cin>>Index;
    		if(Index=='y')
    			goto SD;
    		else
    			return ;
    	}
    	else
    		cout<<"修改成功!!!"<<endl;
    }
    
    bool User_Check()
    {
    	string User_passwd;
    	int Count=0;
    	while(1)
    	{
    		cout<<"请输入用户名:";
    		cin>>User_name;
    INIT:
    		cout<<"请输入密码:";
    		cin>>User_passwd;
    		MFD *p=pmfd->next;
    		char temp[30];
    		memset(temp,'\0',sizeof(temp));
    		strcpy(temp,User_name);
    		Count++;
    		while(p)
    		{
    			if(User_name==p->User_name)
    			{
    				if(User_passwd==p->User_passwd)
    					cout<<"登入成功."<<endl;
    				else
    				{
    					cout<<"抱歉,密码错误,登陆失败,请重新输入!!!"<<endl;
    					if(Count==3)
    					{
    						cout<<"密码错误次数过多,系统运行结束!!!"<<endl;
    						return false;
    					}
    					goto INIT;
    				}
    				strcat(temp,".txt"); 
    				Init_UFD(temp);
    	//			Print_UFD();
    				Disk_Head.Start=Max_End;
    				return true;
    			}
    			p=p->next;
    		}
    		cout<<"用户名不存在,请重新输入!!!"<<endl;
    	}
    //	return false;
    }			
    
    void Init_AFD()
    {
    	pafd=(AFD *)new AFD;
    	pafd->next=NULL;
    }
    
    bool Create_MFD()//创建文件命令
    {
    	string User_name;
    	char User_passwd[30];
    	MFD *p = pmfd;
    	cout<<"请输入要创建的用户名: ";
    	cin>>User_name;
    	cout<<"请输入"<<User_name<<"用户的密码:(默认为:admin)";
    	getchar();
    	cin.getline(User_passwd,30);
    	if(User_passwd[0]=='\0')
    		strcpy(User_passwd,"admin");
    	while(p)
    	{
    		if(User_name==p->User_name)
    		{
    			cout<<"此用户名已存在!!!"<<endl;
    			return false;
    		}
    		if(!p->next)
    			break;
    		p= p->next;
    	}
    	p->next = (MFD *)new MFD;  //尾插法
    	p=p->next;
    	p->User_name=User_name;
    	p->User_passwd=User_passwd;
    	p->End=0;
    	p->next = NULL;
    	p->Ufd_next = NULL;
    	Max_User--;
    	return true;
    }  //应该是 不同的用户下的UFD文件名是不一样的啊,怎么出问题了
    
    bool Create_UFD()//创建文件命令
    {
    	string File_name;
    	UFD *p = pufd;
    	unsigned int Protect;
    	int Max_File_length;
    //	AFD *pa = pafd;
    	cout<<"请输入要创建的文件名: ";
    	cin>>File_name;
    	cout<<"请输入要创建的文件保护类型:";
    	cin>>Protect;
    	cout<<"请输入文件的最大容量:"<<endl;
    	cin>>Max_File_length;
    	while(p)
    	{
    		if(File_name==p->File_name)
    		{
    			cout<<"此文件名已存在!!!"<<endl;
    			return false;
    		}
    		if(!p->next)
    			break;
    		p= p->next;
    	}
    	p->next = (UFD *)new UFD;  //尾插法
    	p=p->next;
    	p->File_name=File_name;
    	p->Max_File_length=Max_File_length;
    	p->Start=Disk_Head.Start;
    	p->Protect = Protect;
    //	p->Time_info=      //暂定
    	p->File_length = 0;     //刚创建文件时,文件是空的
    	Disk_Head.Start+=Max_File_length;
    	p->next = NULL;      //我觉得这部分代码有问题;用户创建了一个文件并不代表该文件就被打开了
    	return true;
    }
    
    bool Delete_UFD()  //关于主目录的用户文件夹的文件删除-->先这样写,好吧    //如果文件已经打开了,是不能删除的
    {
    	string File_name;
    	cout<<"请输入要删除的文件名:";
    	cin>>File_name;
    	UFD *p=pufd,*temp;
    	AFD *pa=pafd;
    	while(pa->next)
    	{
    		if(File_name==pa->next->File_name)
    		{
    			cout<<"抱歉,该文件已被打开,请先关闭,再进行删除操作!!!"<<endl;
    			return false;
    		}
    	}
    	while(p->next)
    	{
    		if(File_name==p->next->File_name)
    		{
    			temp=p->next;
    			p->next=p->next->next;  //如果说要回收模拟的磁盘空间的话,应该是回收最大长度
    		//	Disk_Head.Max_length+=temp->Max_File_length;    //链表中删除了,其他的文件内容的起始位置不变即可,又没事,还是照样可以访问数据的嘛
    			delete temp;
    			cout<<"文件删除成功!!!"<<endl;
    			return true;
    		}
    		p=p->next;
    	}
    	cout<<"抱歉,要删除的文件不存在!!!"<<endl;
    	return false;
    }
    
    bool Open()
    {
        string File_name;
    	unsigned int Protect;
    	cout<<"请输入要打开的文件名:";
        cin>>File_name;
        UFD *p=pufd->next;
    	AFD *pa=pafd->next;
    	while(pa)
    	{
    		if(File_name==pa->File_name)
    		{
    			cout<<"文件"<<File_name<<"已经打开!!!"<<endl;
    			return true;
    		}
    		if(!pa->next)
    			break;
    		pa=pa->next;
    	}
    	if(!pa)     //如果找不到,或者打开的文件目录链表为空表
    		pa=pafd;
    	while(p)
    	{
            if(File_name==p->File_name)
    		{
    			if(!Max_Open)
    			{
    				cout<<"抱歉,最多只能打开5个文件,请先关闭其他打开的文件再操作!!!"<<endl;
    				return false;
    			}
    			if(p->Protect==0)
    			{
    				cout<<"抱歉,此文件不可执行任何操作!!!"<<endl;
    				return false;
    			}
    			cout<<"请选择以什么样的方式打开文件<1-只读,2-可读可写>:";
    			cin>>Protect;
    			pa->next=(AFD *)new AFD;
    			pa=pa->next;
    			pa->File_name=p->File_name;
    			pa->Start=p->Start;
    			pa->File_length=p->File_length;
    			pa->Max_File_length=p->Max_File_length;
    			pa->Protect=Protect;
    			if(Protect==1)
    				pa->Pointer=0;   //Poniter取0表示此时用户无法写数据(没有空间的含义)
    			else
    				pa->Pointer=p->File_length;
    			pa->next=NULL;
    			Max_Open--;
    			cout<<"文件"<<File_name<<"已经打开!!!"<<endl;
    			return true;
    		}
    		p=p->next;
    	}
    	cout<<"抱歉,要打开的文件不存在!!!"<<endl;
    	return false;
    }
    
    void Close()
    {
    	string file_name;
    	UFD *pu=pufd->next;
    	cout<<"请输入要关闭的文件名:";
    	cin>>file_name;
    	AFD *p=pafd,*temp;
    	while(p&&p->next)
    	{
    		if(file_name==p->next->File_name)
    		{
    			temp=p->next;
    			p->next=p->next->next;
    			if(temp->Protect==2)      //可写的文件才有权把新写入的数据也保存起来嘛
    			{
    				while(pu)
    				{
    					if(temp->File_name==pu->File_name)
    					{
    						pu->File_length=temp->Pointer;
    						break;
    					}
    					pu=pu->next;
    				}
    			}
    			delete temp;
    			cout<<"文件"<<file_name<<"关闭成功!!!"<<endl;
    			return ;
    		}
    		p=p->next;
    	}
    	cout<<"抱歉,要关闭的文件没有被打开!!!"<<endl;
    }
    
    bool Read_File()  //因为读写都是通过修改运行文件目录的Pointer去模拟的嘛
    {
    	string File_name;       //你要读文件的话,你这文件肯定得在运行/打开文件目录里面,是吧
    	unsigned int length;
    	AFD *p=pafd->next;
    	cout<<"请输入要读的文件名:";
    	cin>>File_name;
    	cout<<"请输入要读取的长度:";  //读取的话,实际中文件的长度并不会改变
    	cin>>length;          //即读取的长度并不能保存回去,为了方便(如果用户是读数据的话,pointer始终不变)
    	while(p)
    	{
    		if(File_name==p->File_name)
    		{
    			for(int i=p->Start,j=1;j<=length;i++,j++)
    				cout<<Disk_Size[i];
    			cout<<endl;
    			cout<<"文件"<<File_name<<"读取成功!!!"<<endl;
    			return true;
    		}
    		p=p->next;
    	}
    	cout<<"读取失败,文件没有打开过!!!"<<endl;
    	return false;
    }
    
    bool Write_File()  //写的话,自然是运行文件目录
    {
    	string File_name;
    	unsigned int length;
    	AFD *p=pafd->next;
    	char temp[MaxDisk]={'\0'};
    	cout<<"请输入要写的文件名:";
    	cin>>File_name;
    	while(p)
    	{
    		if(File_name==p->File_name)
    		{
    			if(p->Protect!=2)
    			{
    				cout<<"文件"<<File_name<<"不可写"<<endl;
    				return false;
    			}
    			cout<<"请输入要写入的长度:"<<endl;
    			cin>>length;
    			if(p->Pointer+length<=p->Max_File_length)
    			{
    				cout<<"请写入指定长度的内容:<以回车作为结束符>"<<endl;
    				getchar();
    				gets(temp);
    				for(int i=p->Start+p->File_length,j=1;j<=strlen(temp);i++,j++)
    					Disk_Size[i]=temp[j-1];
    				p->Pointer += length;
    				cout<<"文件"<<File_name<<"写入成功!!!"<<endl;
    			}
    			else
    			{
    				cout<<"欲写入的数据大小发生溢出,已超过文件的分配容量,写入失败!!!"<<endl;
    				return false;
    			}
    			return true;
    		}
    		p=p->next;
    	}
    	cout<<"写入失败,文件没有打开过!!!"<<endl;
    	return false;
    }
    
    void Destroy_Space()
    {
    	MFD *pm=pmfd;
    	while(pm)
    	{
    		pmfd=pmfd->next;
    		delete pm;
    		pm=pmfd;
    	}
    	AFD *pa=pafd;
    	while(pa)
    	{
    		pafd=pafd->next;
    		delete pa;
    		pa=pafd;
    	}
    	UFD *pu=pufd;
    	while(pu)
    	{
    		pufd=pufd->next;
    		delete pu;
    		pu=pufd;
    	}
    }
    
    void Save_MFD()
    {
    	ofstream ofs;        //文件的输出流对象
    	ofs.open("MFD.txt");
    	if(!ofs.is_open())
    	{
    		cout<<"The MFD can't open!!!"<<endl;
    		if(flag=='y')
    			cout<<"正在保存主目录用户名信息..."<<endl;
    		else
    			ofs.close();  //该语句待定
    	}
    	MFD *p=pmfd->next;
    	while(p)
    	{
    		if(p->User_name==User_name)
    			p->End=Disk_Head.Start;
    		ofs<<p->User_name<<" "<<p->User_passwd<<" "<<p->End;
    		if(p->next)
    			ofs<<"\n";	
    		p=p->next;
    	}
    	ofs.close();
    }
    
    void Save_UFD(char *name)
    {
    	ofstream ofs;        //文件的输出流对象
    	char temp[MaxDisk]={'\0'};
    	ofs.open(name);
    	if(!ofs.is_open())
    	{
    		cout<<"The "<<name<<"文件 can't open!!!"<<endl;
    		ofs.close();  //该语句待定,这语句真的用的很妙,因为我并没有马上退出这次函数调用了
    	}
    	UFD *p=pufd->next;
    	while(p)
    	{
    		memset(temp,'\0',sizeof(temp));
    		for(int i=p->Start,j=1;j<=p->Max_File_length;i++,j++)
    		{
    			if(Disk_Size[i])
    				temp[j-1]=Disk_Size[i];
    			else
    				break;
    		}
    		if(!temp[0])        //如果文件没有数据的话,就用空格表示此文件没有任何内容
    			temp[0]='#'; 
    		ofs<<p->File_name<<" "<<p->Max_File_length<<" "<<p->Protect<<" "<<p->Start<<" "<<p->File_length<<" "<<temp;
    		if(p->next)
    			ofs<<"\n";
    		p=p->next;
    	}
    	ofs.close();
    }
    
    void Quit_System()
    {
    	AFD *pa=pafd->next;
    	UFD *pu=pufd->next;
    	while(pa)
    	{
    		if(pa->Protect==2)  //2表示可写   //1表示只读  //0表示不可操作
    		{
    			while(pu)
    			{
    				if(pa->File_name==pu->File_name)
    				{
    					pu->File_length=pa->Pointer;
    					break;
    				}
    				pu=pu->next;
    			}
    		}
    		pa=pa->next;
    	}
    	char temp[30];
    	strcpy(temp,User_name);
    	strcat(temp,".txt");
    	Save_MFD();
    	Save_UFD(temp);
    	Print_UFD();
    	Destroy_Space();
    }
    
    void Print_Help()
    {
    	system("color 0b");
    	cout<<"************************二级文件系统演示*************************"<<endl;
    	cout<<"*\t\t命令			  说明			*"<<endl; 
    	cout<<"*\t\tlogin			登录系统		*"<<endl; 
    	cout<<"*\t\tcreate			创建文件		*"<<endl; 
    	cout<<"*\t\tdelete			删除文件		*"<<endl; 
    	cout<<"*\t\topen			打开文件		*"<<endl; 
    	cout<<"*\t\tclose			关闭文件		*"<<endl; 
    	cout<<"*\t\tread			读取文件		*"<<endl; 
    	cout<<"*\t\twrite			写入文件		*"<<endl;
    	cout<<"*\t\tls		        显示目录		*"<<endl;
    	cout<<"*\t\trename			重命文件		*"<<endl;
    	cout<<"*\t\thelp			帮助菜单		*"<<endl;
    	cout<<"*\t\tcls 			清除屏幕		*"<<endl;
    	cout<<"*\t\tlogout 			切换用户		*"<<endl;
    	cout<<"*\t\tquit			退出系统		*"<<endl; 
    	cout<<"*****************************************************************"<<endl; 
    }
    
    void System_Init()
    {
    Start:
    	Print_Help();
    	Init_Disk();
    	if(!Init_MFD())
    	{
    		int num;
    		cout<<"主目录还未创建,是否创建<y/n>!!!"<<endl;
    		cin>>flag;
    		cout<<"请输入欲创建的用户文件夹的个数(1-10):"<<endl;
    		cin>>num;
    		if(flag=='y')
    		{
    			while(num--)
    			{
    				Create_MFD();
    				if(!Max_User)
    				{	
    					cout<<"本系统,最多支持10个用户,创建多余用户失败,请删除其他用户,再做尝试!!!"<<endl;
    					return ;
    				}
    			}
    			Save_MFD();
    			cout<<"主目录已经创建完成,用户各自目录已得到保存,是否继续<y/n>!!!"<<endl;
    			cin>>flag;
    			if(flag=='y')
    				goto Start;
    		}
    	}
    	return ;
    }
    
    
    void File_System()
    {
    	while(1)
    	{
    		string Command;
    		cout<<"请输入命令:";
    		cin>>Command;
    		if(Command=="create")
    			Create_UFD();
    		else if(Command=="delete")
    			Delete_UFD();
    		else if(Command=="open")
    			Open();
    		else if(Command=="close")
    			Close();
    		else if(Command=="read")
    			Read_File();
    		else if(Command=="write")
    			Write_File();
    		else if(Command=="quit")
    		{ 
    			Quit_System();
    			break;
    		}
    		else if(Command=="ls")
    			Print_UFD();
    		else if(Command=="cls")
    			system("cls");
    		else if(Command=="login")
    		{
    			if(!User_Check())
    				break;
    			Init_AFD();
    		}
    		else if(Command=="rename")
    			Rename_File();
    		else if(Command=="logout")
    		{
    			cout<<"用户登出成功!!!"<<endl;
    			Quit_System();
    			System_Init();
    			File_System();
    		}
    		else
    			Print_Help();
    	}
    }
    
    int main()   //我保存,我不能连我的指针域也保存啊,这是不对的吧
    {
    	System_Init();
    	File_System();
    	return 0;
    }

    展开全文
  • 步:依次点菜单:文件——另存为,在弹出的对话框中,选择题目指的保存路径,保存类型选择“纯文本文件”,点保存即可。注意:要对文件名以及保存格式进行修改。这样就保存成功了。扩展资料:全国计算机等级考试...
  • 实例1:python读取文件夹里的文件
  • linux查看某文件夹下各个文件大小

    千次阅读 2022-04-28 20:59:33
    例如,我想查看 /app 下各个文件的大小, cd /app du -h --max-depth=0 * 解释:cd /app : 进入 ...依次类推,如果改成 2 ,则可以查看一级文件夹一级文件二级文件夹二级文件的大小,、三级文件夹
  • Beyond Compare是款,不可多得的专业文件夹文件对比工具,产品可以很方便地对比出,两个文件夹或者文件的不同之处,并把相差的每个字节,用颜色加以表示,查看方便
  • 1. 考生文件夹下存在-文件PY101.py,请写代码替换横线,不修改其他代码,实现以下功能:键盘输入正整数n,按要求把n输出到屏幕,格式要求:宽度为20个字符,诚号字符填充,右对齐,带千位分隔符。如果输入正整数...
  • Flutter开发之——文件文件夹操作

    千次阅读 2021-05-27 10:46:51
    概述 文件夹操作(创建、遍历、重命名、删除) 文件操作(创建、数据写入、读取数据、删除文件) json文件数据读取 ... 文件夹操作(创建、遍历、重命名、删除) 3.1 创建文件夹 _createDir() async
  • 只收录了2020年3月计算机二级Python考试之前的12套操作题,后续更新的题目不在文章的内容之中。 11.在考生文件夹下有个文件PY101.py,在横线处填写代码,完成如下功能。接收用户输入的一一个大于10小于10的8次方的...
  • 摘要:单位局域网内用SERV-U安装FTP服务器,架设信息共享平台,可避免大量的U盘拷贝和节省许多纸张打印,是信息化办公的有效手段之。搞清楚SERV-U的权限配置机制,合理进行用户权限配置是用SERV-U安装FTP服务器的...
  • 一、获取当前文件路径、获取上一级文件路径这里可以想象出获取与自己同级文件的路径,这么写:即先获取上级目录,然后通过join函数来把同级的目录test拼进来。、获取当前路径下的所有文件名得到的是一个列表的...
  • 计算机一级操作题详解

    千次阅读 2021-07-13 00:41:54
    、Windows基本操作(共5分)(1)在Winkt文件夹下建立TestA文件夹。右击鼠标,新建,文件夹,输入文件夹名称。(2)在Winkt文件夹范围内查找“game.exe”文件,并在TestA文件夹下建立它的快捷方式,名称为“游戏”。打开...
  • 今天给大家带来React项目结合Antd的时候如何渲染二级菜单 就算你用其他的UI框架也是换汤不换药。 1.首先配置Antd,关于配置Antd请前往React配置Antd处观看。 2.然后在routes文件定义你的sidebar数据 其中有个...
  • 未来教育计算机二级office题库

    千次阅读 2021-06-17 03:38:29
    下面是小编整理的关于计算机二级office题库,欢迎大家参考!二、字处理题(共30分)1[简答题]请在【答题】菜单下选择【进入考生文件夹】命令,并按照题目要求完成下面的操作。注意:以下的文件必须都保存在考生文件夹下...
  • 只收录了2020年3月计算机二级Python考试之前的12套操作题,后续更新的题目不在文章的内容之中。 21. 在考生文件夹下有个文件PY102.py,在横线处填写代码,完成如下功能。社会平均工作时间是每天8小时(不区分工作日...
  • 一、目的 接之前的一篇博客文章,https://blog.csdn.net/weixin_41856395/article/details/110441057 Vue + ElementUI 后台管理系统实现顶部一级菜单栏,左侧二级菜单栏。
  • 2021年计算机一级Ms Office试题(总)

    千次阅读 2021-07-17 00:59:49
    真正成功的考生,不在于成绩的多少,而在于你是否努力地去实现自我、努力地去刷一级Ms Office试题,喊出自己的声音,走出属于自己的道路。一级Ms Office试题【1】1)世界上公认的第1台电子计算机诞生的年份是A)1943B)...
  • 【转载】Matlab文件夹文件、读取操作(汇总) 、 matlab对路径的操作 filesep用于返回当前平台的目录分隔符,Windows是反斜杠(),Linux是斜杠(/)。 fullfile用于将若干字符串连接成个完整的路径。例如: f=...
  • 三级目录有music文件夹、photo文件夹、txt1.txt文件、txt2.txt文件 music文件夹下有music1.txt文件、music2.txt文件 photo文件夹下有photo1.txt文件、photo2.txt文件 如图: 需求:(当前我处于chaochao目录,...
  • 、创建文件夹 1、创建本目录下文件夹 mkdir dir 2、创建其他目录下文件夹 mkdir dir/file ...、查看文件夹/文件 1、cd dir 2、cd dir/dir1 3、回到主目录 cd ~ 4、查看目录下内容 ll (或者ls)
  • 原标题:找回玩家账号和二级密码,...其他引擎未必有里面提到的功能,比如二级密码,有的引擎是记录在文本里面,而不是变量,兄弟们要学会活学活用,帮主无保留。图文教程1、玩家忘记了账号密码、只记得游戏角色名称...
  • 条SQL语句查询顶级文件夹及其下级文件夹数目和下级文件数目。文件夹表FOLDER,SUPID字段是上级文件夹ID,为0表示是顶级文件夹,如下:-- ------------------------------ Table structure for FOLDER-- --------...
  • 2、然后打开工具,使用文件批量复制的模块,勾选“复制时先清空…”的选项,注意,第栏“要复制的文件文件夹”里面为空,这样就想相当于把空气(嘿嘿)复制过去,后面出现提示就点确定就行了 4、最后就行了 ...
  • 、word部分1、在考生文件夹下Paper子文件夹中,建立主控文档Main.doc,按序创建子文档Sub1.doc和Sub2.doc。要求:1)Sub1.doc中第行内容为“Sub1”,第行内容为文档创建的日期(使用域,格式不限),样式均为...
  • 描述:win10系统word2019显示目录只显示部分一级二级解决办法 步骤: 引用->目录->自定义目录 目录->显示级别->选择想要显示到的级别->确认

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 227,407
精华内容 90,962
关键字:

一级文件二级文件三级文件夹