我使用java 6。使用DataInputStream in = new DataInputStream(System.in);
读取用户输入。当readLine()被弃用时。阅读用户价值的方法是什么?
DataInputStream in = new DataInputStream(System.in);
int num;
try
{
num = Integer.parseInt(in.readLine()); //this works
num = Integer.parseInt(in); //just in doesnt work.
}
catch(Exception e)
{
}
当readLine()被弃用时,请解释
InputStream
基本上是一个二进制结构。如果你想读取文本数据(例如从控制台),你应该使用一些描述的Reader
。要将InputStream
转换为Reader
,使用InputStreamReader
。然后在Reader
周围创建BufferedReader
,您可以使用BufferedReader.readLine()
读取一行。
更多的选择:
- 使用
Scanner
构建System.in
,并调用Scanner.nextLine
- 使用
Console
(从System.console()
获得)并调用Console.readLine
弃用和替代方案通常已经在javadocs中明确说明。所以它是第一个寻找答案的地方。DataInputStream
你可以在这里找到它。readLine()
方法在这里。以下是相关内容的摘录:
弃用。此方法不能正确地将字节转换为字符。从JDK 1.1开始,读取文本行的首选方法是通过
BufferedReader.readLine()
方法。使用DataInputStream
类读取行的程序可以通过替换以下形式的代码来转换为使用BufferedReader
类:DataInputStream d = new DataInputStream(in);
:
BufferedReader d = new BufferedReader(new InputStreamReader(in));
字符编码可以在InputStreamReader
的构造函数中显式指定。
自Java 1.5以来引入的Scanner
也是一个很好的(现代的)替代方案。
下面的代码不起作用,
num = Integer.parseInt(in);
你应该使用:
num = Integer.parseInt(in.readLine());
readLine()
将读取一行的输入直到换行。
在scala中调用readLine命令返回"warning:有一个弃用警告;使用"deprecation for details"消息重新运行。
您可以按照如下所示处理此警告
val hadoopConfig = spark.sparkContext.hadoopConfiguration
val hdfs = org.apache.hadoop.fs.FileSystem.get(hadoopConfig)
val destinationFile = new org.apache.hadoop.fs.Path(s"hdfs://...")
val outFile = hdfs.open(destinationFile)
val wholeStream = Array.fill[Byte](outFile.available)(0)
outFile.readFully(wholeStream,0,outFile.available)
return new String(wholeStream)