| New file | 
 |  |  | 
 |  |  | package com.dy.testServer.console; | 
 |  |  |  | 
 |  |  | import java.io.Console; | 
 |  |  | import java.io.PrintWriter; | 
 |  |  |  | 
 |  |  | 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() ; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    /** | 
 |  |  |     * 初始,检查并输出一些信息 | 
 |  |  |     * @param args 参数 | 
 |  |  |     * @throws Exception 异常 | 
 |  |  |     */ | 
 |  |  |    public void init(String[] args) throws Exception{ | 
 |  |  |       PrintWriter prtWrt = console.writer() ; | 
 |  |  |       if(args != null && args.length > 0){ | 
 |  |  |          String str = "" ; | 
 |  |  |          for(String s : args){ | 
 |  |  |             str += s ; | 
 |  |  |          } | 
 |  |  |          prtWrt.println("info:启动参数" + str); | 
 |  |  |       } | 
 |  |  |  | 
 |  |  |       prtWrt.println("----------------------------------------"); | 
 |  |  |       prtWrt.println("--                                    --"); | 
 |  |  |       prtWrt.println("--    欢迎使用mwTest 服务控制端       --"); | 
 |  |  |       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", "123456"); | 
 |  |  |             // 使用后应立即将数组清空,以减少其在内存中占用的时间,增强安全性 | 
 |  |  |             password = null; | 
 |  |  |          } else if(passwordStr.equals(myPassword)){ | 
 |  |  |             return true; | 
 |  |  |          } | 
 |  |  |       } | 
 |  |  |    } | 
 |  |  | 	 | 
 |  |  |    private boolean doConsole(){ | 
 |  |  |       boolean exit = false ; | 
 |  |  |       while (!exit) { | 
 |  |  |          String command = console.readLine(commandPrefix); | 
 |  |  |          exit = Command.dealCommand(command, prtWrt) ; | 
 |  |  |       } | 
 |  |  |       return exit ; | 
 |  |  |    } | 
 |  |  | 	 | 
 |  |  |    public static void changeCommandPrefix(String prefix){ | 
 |  |  |       commandPrefix = commandPrefix1 + prefix ; | 
 |  |  |    } | 
 |  |  |    public static void recoverCommandPrefix(){ | 
 |  |  |       commandPrefix = commandPrefix1 + commandPrefix2 ; | 
 |  |  |    } | 
 |  |  | } |