在Java中,System
静态方法console()
返回允许从终端读取的对象。该方法返回的Console
实例提供方法readLine()
和readPassword()
。第一个回应输入到控制台,但第二个 - 没有。
在KotlinJVM应用程序中,提供了顶级函数readLine()
来从控制台读取输入,但是readPassword()
没有人。此外,System.console()
返回null。
如何从KotlinJVM应用程序读取密码(不回显)?
我刚试过这些并获得了NPE
package com.helpchoice.kotlin.fuel.dsl
fun main(args: Array<String>) {
try {
System.console().readPassword("pw:")
} catch (e: Throwable) {
println(e::class.java.name)
}
}
答案 0 :(得分:2)
显然这是一个IDE问题(见System.console() returns null)。
因此建议使用唯一的解决方案:如果没有控制台,请从System.in中读取。
val pw = System.console()?.readPassword() ?: readLine()
这将在从IDE调试时显示您的密码,但如果从控制台启动则会隐藏。
答案 1 :(得分:-3)
也许你可以从创建它开始:
val console : Console? = System.console()
val password = console.readPassword("Enter password")
为我工作