DataInputStream已弃用readLine()方法



我使用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)

相关内容

  • 没有找到相关文章

最新更新