📄 main.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 + -