在Kotlin中从控制台读取密码

时间:2018-06-05 21:55:26

标签: kotlin console passwords

在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)
    }
}

2 个答案:

答案 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")

为我工作