35

私はJava6を使用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()が廃止された場合の説明をお願いします。

4

4 に答える 4

36

InputStream基本的にはバイナリ構造です。(コンソールなどから)テキストデータを読み取りたい場合はReader、いくつかの説明を使用する必要があります。をに変換するInputStreamにはReader、を使用しますInputStreamReader。次に、のBufferedReader周りを作成するReaderと、を使用して行を読み取ることができますBufferedReader.readLine()

その他の選択肢:

  • Scanner構築されたラウンドSystem.inを使用して、Scanner.nextLine
  • Console(から取得System.console())を使用して、Console.readLine
于 2011-04-10T11:20:37.133 に答える
29

非推奨と代替案は通常、 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ものも、優れた(そして最新の)代替手段です。

于 2011-04-10T11:27:31.313 に答える
0

以下は機能しません、

num = Integer.parseInt(in);

代わりに、以下を使用する必要があります。

num = Integer.parseInt(in.readLine());

readLine()改行まで行の入力を読み取ります。

于 2014-08-17T14:56:32.290 に答える
0

scalaでreadLineコマンドを呼び出すと、「警告:非推奨の警告が1つありました。詳細については、-deprecationを指定して再実行してください」というメッセージが返されます。

この警告は、以下に示すように処理できます

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)
于 2020-01-16T12:15:30.880 に答える