如何读取BufferedInputStream中的一行?

Pan*_*aha 17 java user-input input bufferedinputstream

我正在编写一个代码来使用BufferedInputStream来读取用户的输入,但是当BufferedInputStream读取字节时,我的程序只读取第一个字节并打印它.有没有什么方法可以读取/存储/打印整个输入(这将是整数)除了只读取第一个字节?

import java.util.*;
import java.io.*;
class EnormousInputTest{

public static void main(String[] args)throws IOException {
        BufferedInputStream bf = new BufferedInputStream(System.in)   ;
    try{
            char c = (char)bf.read();

        System.out.println(c);
    }
finally{
        bf.close();
}   
}   
}
Run Code Online (Sandbox Code Playgroud)

输出:

[shadow @ localhost codechef] $ java EnormousInputTest 5452 5

icz*_*cza 32

A BufferedInputStream用于读取字节.阅读一行涉及阅读字符.

您需要一种方法将输入字节转换为由字符集定义的字符.因此,您应该使用a Reader将字节转换为字符,并从中读取字符.BufferedReader还有一个readLine()读取整行的方法,使用:

BufferedInputStream bf = new BufferedInputStream(System.in)

BufferedReader r = new BufferedReader(
        new InputStreamReader(bf, StandardCharsets.UTF_8));

String line = r.readLine();
System.out.println(line);
Run Code Online (Sandbox Code Playgroud)

  • +`Long.MAX_VALUE`用于实际解释为什么OP需要`Reader`.有很多答案只需阅读"使用此代码:[粘贴代码]". (3认同)