Java:如何从文件中读取密码?

时间:2016-09-06 11:05:25

标签: java console passwords

我正在使用System.console()来读取用户密码。

我的代码:

    Console console = System.console();
    if (console == null) {
        throw new RuntimeException("No console is available for input");
    }

    System.out.print("Enter the password: ");
    String password = new String(console.readPassword());

当我直接运行它时(Redhat),它正常工作。

问题是当我尝试从文本文件中读取密码时:

java -jar my_jar.jar < password.txt

我明白了:

  

没有可用于输入的控制台。

我该如何解决?

1 个答案:

答案 0 :(得分:0)

此行为是预期的。引自Cosole

  

虚拟机是否具有控制台取决于     底层平台以及虚拟的方式     机器被调用。如果虚拟机是从一个启动的     交互式命令行,无需重定向标准输入和     输出流然后它的控制台将存在并且通常是     连接到键盘和显示虚拟机的显示器     发布了。

对于不使用BufferedReader的可能解决方案,您可以阅读此答案Trying to read from the console in Java

如果存在,您可以继续使用控制台,如果没有,则可以返回Scaner / App\Accrediations::with('access.section')->find(1);