13

在 Scala 程序中,我需要从标准输入中读取密码字符串(禁用回显)。我试过:

java.io.Console.readPassword

但由于某种原因,我无法java.io.Console从 Scala (?) 调用对象中的任何方法。

从 Scala 的标准输入中读取字符串(禁用回显)的“标准”方式是什么?

4

1 回答 1

16

我假设您想从控制台提示符读取密码,因此您需要从(不是单例)创建一个Console实例。SystemConsole

scala> val standardIn = System.console()
standardIn: java.io.Console = java.io.Console@69d1964d

scala> val password = standardIn.readPassword()

请注意, no​​是必需的,因为 Scala 的类型推断以及默认情况下已经在范围内import的事实。System

有关更多信息,请参阅javadoc 。java.io.Console

编辑:在编译的 Scala 程序中:

object ReadPassword {
  def main(args: Array[String]) {
    val standardIn = System.console()
    println("standardIn object: " + standardIn)

    print("Password> ")
    val pw = standardIn.readPassword()

    print("Password: ")
    pw.foreach(print) // For demonstration purposes
    println()
  }
}

编译/运行:

$ scalac ReadPassword.scala
$ scala ReadPassword
standardIn object: java.io.Console@311671b2
Password> 
Password: hello world
于 2012-10-30T19:21:02.827 回答