JAVA——仿Linux命令行文件管理系统命令的简单实现

源代码 

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()+"# ");
    }
}

运行结果

参考文章

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Starzkg

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值