DataInputStream 已弃用的 readLine() 方法

2022-09-01 06:38:18

我在java 6上。用于读取用户输入。当 readLine() 被弃用时。读取用户价值的解决方法是什么?DataInputStream in = new DataInputStream(System.in);

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()被弃用时应该解释的那样。


答案 1

InputStream基本上是一个二进制结构。如果要读取文本数据(例如从控制台读取),则应使用一些描述。要将 转换为 ,请使用 。然后在 周围创建一个 ,您可以使用 读取一行。ReaderInputStreamReaderInputStreamReaderBufferedReaderReaderBufferedReader.readLine()

更多替代方案:

  • 使用扫描仪构建的圆形,并调用System.inScanner.nextLine
  • 使用控制台(从 获取)并调用System.console()Console.readLine

答案 2

弃用和替代方案通常已经在javadocs中明确解释了。因此,这将是寻找答案的第一个地方。因为你可以在这里找到它。方法在这里。以下是相关性的摘录:DataInputStreamreadLine()

已弃用。此方法无法将字节正确转换为字符。从 JDK 1.1 开始,读取文本行的首选方法是通过该方法。使用该类读取行的程序可以通过替换以下形式的代码来转换为使用该类:BufferedReader.readLine()DataInputStreamBufferedReader

    DataInputStream d = new DataInputStream(in);

跟:

    BufferedReader d
         = new BufferedReader(new InputStreamReader(in));

然后,可以在 的构造函数中显式指定字符编码。InputStreamReader

从Java 1.5开始引入的Scanger也是一个很好的(和现代的)替代方案。


推荐