BufferedReader中的缓冲区大小是多少?

构造函数中的缓冲区大小是什么意思?

BufferedReader(Reader in, int size)

当我编写程序时:

import java.io.*;

class bufferedReaderEx{

public static void main(String args[]){

InputStreamReader isr = null;

BufferedReader br = null;

try{

isr = new InputStreamReader(System.in);

// System.out.println("Write data: ");

// int i = isr.read();

// System.out.println("Data read is: " + i);

//Thus the InputStreamReader is useful for reading the character from the stream

System.out.println("Enter the data to be read by the bufferedReader: ");

//here isr is containing the lnefeed already so this is needed to be flushed.

br = new BufferedReader(isr, 2);

String str = br.readLine();

System.out.println("The data is : :" + str);

}catch(IOException e){

System.out.println("Can't read: " + e.getMessage());

}

}

}

输出:

Enter the data to be read by the bufferedReader: Hello world and hello world again

The data is: Hello world and hello world again

然后,缓冲区大小是什么意思,正如我希望的那样,它只能读取两个字符。但事实并非如此。

回答:

BufferedReader顾名思义,缓冲输入。这意味着它会在将输入源传递给您之前从输入源读取到缓冲区。此处的缓冲区大小是指其缓冲的字节数。

从大多数来源读取输入非常慢。仅2个字节的缓冲区将损害性能,因为您的程序很可能大部分时间都在等待输入。缓冲区大小为2时,读取100字节将导致从内存缓冲区中读取2个字节(非常快),填充缓冲区(非常慢),从缓冲区中读取2个字节(非常快),填充缓冲区(非常慢),等等-

整体非常慢。缓冲区大小为100时,读取100字节将导致从内存缓冲区中读取100字节(非常快)-总体而言非常快。假设在读取时缓冲区包含100个字节,这在您这样的情况下是一个合理的假设。

除非您知道自己在做什么,否则应使用很大的默认缓冲区大小。使用较小的缓冲区的原因之一是当您在内存有限的设备上运行时,因为缓冲区占用了内存。

以上是 BufferedReader中的缓冲区大小是多少? 的全部内容, 来源链接: utcz.com/qa/420644.html

回到顶部