【问题标题】:release cursor following console.readPassword在 console.readPassword 之后释放光标
【发布时间】:2016-07-16 15:52:20
【问题描述】:

以下代码尝试从系统控制台读取密码。 如果用户在 30 秒内未输入密码,则再次显示提示。但是,我注意到第一次调用后没有释放光标 给console.readPassword()

我确实尝试在 catch 块中执行 console.reader().close();,但没有帮助。

一些上下文:我正在尝试将此作为以下Gradle Issue 的解决方法,它会覆盖提示Enter password:,并且用户会感觉好像应用程序已挂起。

Java 专家请指教。

public final class RetryPassword {

  public static char [] getPassword() {
    Console console = System.console();
    Callable<char[]> password = new Callable<char[]>() {
      @Override
      public char[] call() {
        return console.readPassword("Enter password: ");
      }
    };

    final ExecutorService executor = Executors.newSingleThreadExecutor();
    final Future<char[]> future = executor.submit(password);
    executor.shutdown();

    try { 
      return future.get(30, TimeUnit.SECONDS); 
    }
    catch (Exception e) {
      e.printStackTrace();
    }
    return null;
  }


  public static void main(String[] args) {
    char [] p = getPassword(); // first call to read password
    if (p == null) {
      p = getPassword(); // try again
    }
    System.out.println(p);
  }
}

【问题讨论】:

    标签: java io console


    【解决方案1】:

    这可以通过以下方式解决 http://www.javaspecialists.eu/archive/Issue153.html

    从以下question得到的解决方案

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-26
      • 2016-08-31
      • 2012-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-10
      相关资源
      最近更新 更多