| package com.dy.pipirrComCreator.console; | 
|   | 
| import lombok.extern.slf4j.Slf4j; | 
|   | 
| import java.io.Console; | 
| import java.io.PrintWriter; | 
| @Slf4j | 
| public class CommandConsole { | 
|      | 
|     private Console console ; | 
|     private PrintWriter prtWrt ; | 
|     private static final String myPassword = "123456" ; | 
|     private static final String commandPrefix1 = ">>" ; | 
|     private static final String commandPrefix2 = "$: " ; | 
|     private static String commandPrefix = commandPrefix1 + commandPrefix2 ; | 
|   | 
|      | 
|     public CommandConsole(Console console)throws Exception{ | 
|         this.console = console ;     | 
|         if(this.console == null){ | 
|             throw new Exception("严重错误,java控制台对象为空!"); | 
|         } | 
|         prtWrt = console.writer() ; | 
|     } | 
|   | 
|     /** | 
|      * 初始,检查并输出一些信息 | 
|      * @throws Exception | 
|      */ | 
|     public void init() throws Exception{ | 
|         PrintWriter prtWrt = console.writer() ; | 
|         prtWrt.println("----------------------------------------"); | 
|         prtWrt.println("--                                    --"); | 
|         prtWrt.println("--    欢迎使用命令生成器              --"); | 
|         prtWrt.println("--                                    --"); | 
|         prtWrt.println("----------------------------------------"); | 
|     } | 
|      | 
|     /** | 
|      * 执行控制台控制 | 
|      * @return | 
|      */ | 
|     public boolean clientConsole(){ | 
|         boolean exit = false ; | 
|         try { | 
|             this.login() ; | 
|             exit = this.doConsole(); | 
|         } catch (Exception e) { | 
|             e.printStackTrace(); | 
|         } | 
|         return exit ; | 
|     } | 
|      | 
|     private boolean login(){ | 
|         while (true) { | 
|             //String username = console.readLine(">>Username: "); | 
|             char[] password = console.readPassword(">>Password: "); | 
|             String passwordStr = String.valueOf(password) ; | 
|             if (passwordStr.equals("help")) { | 
|                 console.printf("密码是%1$s\n", myPassword); | 
|                 // 使用后应立即将数组清空,以减少其在内存中占用的时间,增强安全性 | 
|                 password = null; | 
|             } else if(passwordStr.equals(myPassword)){ | 
|                 return true; | 
|             } | 
|         } | 
|     } | 
|      | 
|     private boolean doConsole(){ | 
|         boolean exit = false ; | 
|         while (!exit) { | 
|             String command = console.readLine(commandPrefix); | 
|             try { | 
|                 exit = Command.dealCommand(command, prtWrt) ; | 
|             }catch (Exception e){ | 
|                 e.printStackTrace(); | 
|             } | 
|   | 
|         } | 
|         return exit ; | 
|     } | 
|      | 
|     public static void changeCommandPrefix(String prefix){ | 
|         commandPrefix = commandPrefix1 + prefix ; | 
|     } | 
|     public static void recoverCommandPrefix(){ | 
|         commandPrefix = commandPrefix1 + commandPrefix2 ; | 
|     } | 
| } |