【问题标题】:Bufferedreader explanation?缓冲阅读器的解释?
【发布时间】:2023-03-23 04:02:01
【问题描述】:
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

System.in(Standard input stream)- 以字节为单位从键盘获取输入

InputStreamReader: 将字节转换为 Unicode 字符/将标准输入转换为读取器对象以与 BufferedReader 一起使用

Finally BufferedReader: 用于从字符输入流中读取(输入流阅读器)

String c = br.ReadLine(); -- 一种用于从输入流中读取字符并将它们一次性放入字符串中的方法,而不是逐字节。

上面的一切都正确吗?如有错误请指正!

【问题讨论】:

    标签: java


    【解决方案1】:

    差不多了,但是这个:

    String c = br.readLine(); -- 一种用于从输入流中读取字符并将它们一次性放入字符串中的方法,而不是逐字节。

    它从输入 reader 读取字符(BufferedReader 不了解流)并一次性返回一整行,而不是逐个字符。层层考虑,在InputStreamReader层“之上”,“字节”的概念已经不存在了。

    另外,请注意,您可以读取带有Reader 的字符块而无需读取一行:read(char[], int, int) - readLine() 的重点是它将为您进行行尾检测。

    (如 cmets 中所述,它也是 readLine,而不是 ReadLine :)

    【讨论】:

    • 但是如果有人问语句中 BufferedReader 的目的是什么,我不应该说它从输入流阅读器中读取字符吗?
    • @rd4code:不清楚您所说的“BufferedReader 的目的”是什么意思 - 在这种情况下,您使用 BufferedReader 来表示它提供的 readLine() 方法,该方法在InputStreamReader.
    • @rd4code:这为您提供了一个InputStreamReader,您可以从中读取从System.in 获得的字符。但是你不能在上面使用readLine
    • kkk。这就是为什么我们将 bufferedreader 类包装在 inputstreamreader 周围以便执行 readLine 函数
    【解决方案2】:

    BufferedReader的用途是什么,解释一下?

    Bufferedreader是一个java类,下面是这个类的层次结构。

    java.lang.Object ==> java.io.Reader ==> java.io.BufferedReader

    此外,BufferedReader 提供了一种读取内容的有效方式。很简单.. 让我们看看下面的例子来理解。

    import java.io.BufferedReader;
    import java.io.FileReader;
    
    public class Main {
    
        public static void main(String[] args) {
    
            BufferedReader contentReader = null;
            int total = 0; // variable total hold the number that we will add
    
            //Create instance of class BufferedReader
            //FileReader is built in class that takes care of the details of reading content from a file
            //BufferedReader is something that adds some buffering on top of that to make reading fom a file more efficient.
            try{
                contentReader = new BufferedReader(new FileReader("c:\\Numbers.txt"));
                String line = null;
    
                while((line = contentReader.readLine()) != null)
    
                    total += Integer.valueOf(line);
    
                System.out.println("Total: " + total);
            }
    
            catch(Exception e)
            {
                System.out.println(e.getMessage());
            }
    
            finally{
                try{
                    if(contentReader != null)
                        contentReader.close();
                }
    
                catch (Exception e)
                {
                    System.out.println(e.getMessage());
                }
            }
    
    
    
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2023-03-28
      • 2017-09-23
      • 1970-01-01
      • 1970-01-01
      • 2011-10-23
      • 1970-01-01
      • 2020-10-24
      • 2015-02-06
      • 1970-01-01
      相关资源
      最近更新 更多