⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.cpp

📁 LINUX 设计一个简单的二级文件系统
💻 CPP
字号:
#include <iostream>
#include <iostream.h>
#include "FileSystem.h"
#include "Util.h"
#include "string2"

/*
* 内置用户 alvin, 密码 alvin
* 内置用户 vica	, 密码 vica
* 内置用户 kzk	, 密码 kzk
* 内置用户 doy	, 密码 doy
*/

void Format() {
	FileSystem fs;
	char c;

	cout << "格式化文件系统将会破坏所有已有数据,你确定要格式化吗?(Y/N)" << endl;
	cout << "请输入你的选择: ";
	cin >> c;
	if (c == 'Y' || c=='y') {
		fs.Format();
		cout << "格式化完毕!" << endl;
	}
	return;
}

int main() {
	//Format(); exit(0);

	FileSystem fs;
	
	std::string cmd, usn, scmd;
	std::string $[5];
	std::string content;

	int ofile[100];
	char c;
	int i;
	fs.Load();
	for (i=0; i<100; i++) {
		ofile[i] = -1;
	}

	while (1) {
		cout << endl;
		cout << "***********系统命令***********" << endl;
		cout << "* 登录: login USERNAME PASSWORD" << endl;
		cout << "* 退出: exit" << endl;
		cout << "******************************" << endl << endl;

		u.ReadLine(cmd);
		if (u.regTest("^exit$", cmd.c_str())) {
			fs.UnLoad();
			exit(0);
		} else if (u.regTest("^login\\s[a-zA-Z0-9._]{1,8}\\s[a-zA-Z0-9._]{1,8}$", cmd.c_str())) {

			u.Find("(?<= )[a-zA-Z0-9._]{1,8}(?= |$)", cmd, $);
			if (fs.Login($[0].c_str(), $[1].c_str())) {
				cout << endl;
				cout << "***********操作命令***********" << endl;
				cout << "* 退出登录: logout" << endl;
				cout << "* 列出目录: dir" << endl;
				cout << "* 改变目录: cd FolderNAME" << endl;
				cout << "* 创建目录: mkdir FolderNAME" << endl;
				cout << "* 删除目录: deldir FolderNAME" << endl;
				cout << "* 创建文件: mkfile FileNAME" << endl;
				cout << "* 删除文件: delfile FileNAME" << endl;
				cout << "* 打开文件: fopen FileNAME" << endl;
				cout << "* 关闭文件: fclose FileID" << endl;
				cout << "* 写入文件: fwrite FileID" << endl;
				cout << "* 读取文件: fread FileID" << endl;
				cout << "******************************" << endl << endl;
				// 登录后操作
				usn = $[0].c_str();
				while (1) {
					u.ReadLine(cmd);
					if (u.regTest("^logout$", cmd.c_str())) {
						fs.Logout(usn.c_str());
						break;
					} else if (u.regTest("^dir$", cmd.c_str())) {
						fs.ShowList(usn.c_str());
					} else if (u.regTest("^cd\\s+[^ ]{1,20}$", cmd.c_str())) {
						u.Find("(?<= )[^ ]{1,20}(?= |$)", cmd, $);
						fs.ChangeDir(usn.c_str(), $[0].c_str());
					} else if (u.regTest("^mkdir\\s+[^ ]{1,20}$", cmd.c_str())) {
						u.Find("(?<= )[^ ]{1,20}(?= |$)", cmd, $);
						fs.MakeDir(usn.c_str(), $[0].c_str());
					} else if (u.regTest("^deldir\\s+[^ ]{1,20}$", cmd.c_str())) {
						u.Find("(?<= )[^ ]{1,20}(?= |$)", cmd, $);
						cout << "删除文件夹将会连子文件一并删除。你确定要删除吗?(Y/N)" << endl;
						cout << "请输入你的选择: ";
						cin >> c;
						if (c=='y' || c=='Y') {
							fs.DeleteFolder(usn.c_str(), $[0].c_str());
						}
					} else if (u.regTest("^mkfile\\s+[^ ]{1,20}$", cmd.c_str())) {
						u.Find("(?<= )[^ ]{1,20}(?= |$)", cmd, $);
						fs.MakeFile(usn.c_str(), $[0].c_str());
					} else if (u.regTest("^delfile\\s+[^ ]{1,20}$", cmd.c_str())) {
						u.Find("(?<= )[^ ]{1,20}(?= |$)", cmd, $);
						fs.DeleteFile(usn.c_str(), $[0].c_str());
					} else if (u.regTest("^fopen\\s+[^ ]{1,20}$", cmd.c_str())) {
						u.Find("(?<= )[^ ]{1,20}(?= |$)", cmd, $);
						for (i=0; i<100; i++) {
							if (ofile[i] == -1) {
								ofile[i] = fs.Open(usn.c_str(), $[0].c_str());
								if (ofile[i] != -1) {
									cout << "文件打开成功, 文件ID为: " << ofile[i] << "." << endl;
								}
								break;
							}
						}
					} else if (u.regTest("^fclose\\s+\\d+$", cmd.c_str())) {
						u.Find("(?<= )\\d+(?= |$)", cmd, $);
						fs.Close(usn.c_str(), ::atoi($[0].c_str()));
					} else if (u.regTest("^fwrite\\s+\\d+$", cmd.c_str())) {
						u.Find("(?<=\\s+)\\d+(?=\\s+|$)", cmd, $);
						std::cout << "请输入你要写入文件的内容:";
						u.ReadLine(cmd);
						fs.Write(usn.c_str(), ::atoi($[0].c_str()), cmd.c_str());
						std::cout << "写入成功!\n";
					} else if (u.regTest("^fread\\s+\\d+$", cmd.c_str())) {
						u.Find("(?<= )\\d+(?= |$)", cmd, $);
						content = fs.Read(usn.c_str(), ::atoi($[0].c_str()));
						cout << "读取内容如下:" << endl;
						cout << content.c_str() << endl;
					} else {
						cout << "Sorry! 请输入格式正确的命令." << endl;
					}
				}
			}
		} else {
			cout << "Sorry! 请输入格式正确的命令." << endl;
		}
	}
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -