Считать пароль из консоли в Котлине - PullRequest
0 голосов
/ 06 июня 2018

В Java статический метод System console() возвращает объект, позволяющий читать с терминала.Экземпляр Console, возвращаемый этим методом, предоставляет методы readLine() и readPassword().Первый вывод эхом выводится на консоль, а второй - нет.

В приложении KotlinJVM предусмотрена функция верхнего уровня readLine() для чтения ввода с консоли, но нет readPassword().Также System.console() возвращает ноль.

Как я могу прочитать пароль (без повторения) из приложения 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 голосов
/ 06 июня 2018

Очевидно, что это проблема IDE (см. System.console () возвращает null ).

Поэтому рекомендуется только одно решение: читать из System.in, если консоли нет.

val pw = System.console()?.readPassword() ?: readLine()

Это покажет ваш пароль при отладке из IDE, но будет скрыт при запуске из консоли.

0 голосов
/ 06 июня 2018

Может быть, вы можете начать с создания этого:

val console : Console? = System.console()
val password = console.readPassword("Enter password")

Работает для меня

...