源代码
package cn.edu.zstu.fms;
import cn.edu.zstu.fms.context.SystemContext;
import cn.edu.zstu.fms.service.IFileManagerService;
import cn.edu.zstu.fms.service.impl.DiskFileManagerServiceImpl;
import lombok.SneakyThrows;
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
/**
* @author ShenTuZhiGang
* @version 1.0.0
* @date 2020-12-16 23:46
*/
public class FMSDemoCommand extends Thread{
IFileManagerService iFileManagerService;
public static void main(String[] args) {
FMSDemoCommand fmsDemoCommand = new FMSDemoCommand();
fmsDemoCommand.start();
}
@SneakyThrows
@Override
public void run() {
int choice = 0;
String name, pass, pass1;
Scanner input=new Scanner(System.in);//创建一个键盘扫描类对象
Thread.sleep(2);
while (true) {
System.out.println("\t\t*****************************************\t");
System.out.println("\t\t* 文 件 系 统 \t*");
System.out.println("\t\t* 1. 注册新用户 \t*");
System.out.println("\t\t* 2. 登录 \t*");
System.out.println("\t\t* 3. 帮助 \t*");
System.out.println("\t\t* 4. 退出 \t*");
System.out.println("\t\t*****************************************\t");
System.out.println("\t\t请选择: ");
choice = input.nextInt();
input.nextLine();
switch (choice) {
/*选择注册*/
case 1: {
System.out.println("请输入用户名:");
name = input.nextLine();
System.out.println("请输入密码: ");
pass = input.nextLine();
System.out.println("请确认密码: ");
pass1 = input.nextLine();
while (!pass.equals(pass1)) {
System.out.println("\t\t--两次密码不一致,请重试..");
System.out.println("请输入密码: ");
pass = input.nextLine();
System.out.println("请确认密码: ");
pass1 = input.nextLine();
}
if(register(name, pass) == 1){
System.out.println("\t\t--注册成功..");
}else{
System.out.println("\t\t--注册失败,请重试..");
}
Thread.sleep(2);
}
break;
/*选择登录*/
case 2: {
System.out.println("请输入用户名:");
name = input.nextLine();
System.out.println("请输入密码:");
pass = input.nextLine();
if(login(name, pass) == 1) {
System.out.println("\t\t--登录成功..");
SystemContext.user = name;
operate();
} else{
System.out.println("\t\t--登录失败,请检查用户名和密码..");
Thread.sleep(2);
}
}
break;
case 3:{
System.out.println("\t\t*********************************************************");
System.out.println("\t\t* 帮助文档 \t*");
System.out.println("\t\t* 如何使用该系统,输入help时显示所有命令的帮助文档; \t*");
System.out.println("\t\t* 输入某个命令+?时显示该条命令的使用说明 \t*");
System.out.println("\t\t*********************************************************");
}
break;
case 4: {
System.out.println(" --退出文件系统..");
Thread.sleep(3);
System.exit(0);
}
break;
/*其他选项*/
default: break;
}
}
}
private void operate() {
Scanner input=new Scanner(System.in);//创建一个键盘扫描类对象
iFileManagerService = new DiskFileManagerServiceImpl();
iFileManagerService.checkUserDirectory();
command();
while (input.hasNext()){
String cmd = input.nextLine().trim().replaceAll("\\s+"," ");
System.out.println(cmd);
String[] args = cmd.split(" ");
if(cmd == null || "".equals(cmd)){
command();
continue;
}else if(cmd.startsWith("cd")){
iFileManagerService.cd(args[1]);
}else if(cmd.startsWith("ls")){
continue;
}else if(cmd.startsWith("cp")){
continue;
}else if(cmd.startsWith("mv")){
continue;
}else if(cmd.startsWith("mk")){
continue;
}else if(cmd.startsWith("rm")){
continue;
}else if(cmd.startsWith("mkdir")){
continue;
}else if(cmd.startsWith("rmdir")){
continue;
}else if(cmd.startsWith("cat")){
continue;
}else if(cmd.startsWith("head")){
continue;
}else if(cmd.startsWith("tail")){
continue;
}else if(cmd.startsWith("help")){
continue;
}else if(cmd.startsWith("exit")){
break;
}else {
System.out.println(args[0] + ": command not found");
}
command();
}
}
private int register(String name, String pass) {
return 1;
}
private int login(String name, String pass) {
return 1;
}
private void command(){
System.out.print(SystemContext.user+"@"+System.getenv().get("COMPUTERNAME")+":"+iFileManagerService.getNowPath()+"# ");
}
}
运行结果
参考文章