从Scala中的控制台读取密码

时间:2012-10-30 19:08:09

标签: scala input

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

java.io.Console.readPassword

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

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

1 个答案:

答案 0 :(得分:16)

我假设您要从控制台提示符处读取密码,因此您需要从Console创建System实例(Console不是单身人士)。

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

scala> val password = standardIn.readPassword()

请注意,由于Scala的类型推断以及默认情况下import已在范围内,因此不需要System

有关详情,请参阅java.io.Console 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() } }

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

$ scalac ReadPassword.scala
$ scala ReadPassword
standardIn object: java.io.Console@311671b2
Password> 
Password: hello world

编译/运行:

{{1}}