在Java中,BufferedReader 是一个啥类啊,有啥作用啊

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Java中,BufferedReader 是一个啥类啊,有啥作用啊相关的知识,希望对你有一定的参考价值。

1、java.io.BufferedReader和java.io.BufferedWriter类各拥有8192字符的缓冲区。当BufferedReader在读取文本文件时,会先尽量从文件中读入字符数据并置入缓冲区,而之后若使用read()方法,会先从缓冲区中进行读取。如果缓冲区数据不足,才会再从文件中读取,使用BufferedWriter时,写入的数据并不会先输出到目的地,而是先存储至缓冲区中。如果缓冲区中的数据满了,才会一次对目的地进行写出。

2、从标准输入流System.in中直接读取使用者输入时,使用者每输入一个字符,System.in就读取一个字符。为了能一次读取一行使用者的输入,使用了BufferedReader来对使用者输入的字符进行缓冲。readLine()方法会在读取到使用者的换行字符时,再一次将整行字符串传入。

3、System.in是一个位流,为了转换为字符流,可使用InputStreamReader为其进行字符转换,然后再使用BufferedReader为其增加缓冲功能。例如:
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

下面的示例示范了BufferedReader和BufferedWriter的使用。可以在文字模式下输入字符,程序会将输入的文字存储至指定的文件中,如果要结束程序,输入quit字符串即可。
Java代码 :
package ysu.hxy;
import java.util.*;
import java.io.*;

public class BufferedReaderWriterDemo
public static void main(String[] args)
try
//缓冲System.in输入流
//System.in是位流,可以通过InputStreamReader将其转换为字符流
BufferedReader bufReader = new BufferedReader(new InputStreamReader(System.in));
//缓冲FileWriter
BufferedWriter bufWriter = new BufferedWriter(new FileWriter(args[0]));
String input = null;
//每读一行进行一次写入动作
while(!(input = bufReader.readLine()).equals("quit"))
bufWriter.write(input);
//newLine()方法写入与操作系统相依的换行字符,依执行环境当时的OS来决定该输出那种换行字符
bufWriter.newLine();

bufReader.close();
bufWriter.close();
catch(ArrayIndexOutOfBoundsException e)
System.out.println("没有指定文件");
catch(IOException e)
e.printStackTrace();



//运行后会在目录下产生一个文件test2.txt,并在其中写入刚才输入的内容。
参考技术A BufferedReader 从字符输入流中读取文本,缓冲各个字符,从而提供字符、数组和行的高效读取。

可以指定缓冲区的大小,或者可使用默认的大小。大多数情况下,默认值就足够大了。

通常,Reader 所作的每个读取请求都会导致对基础字符或字节流进行相应的读取请求。因此,建议用 BufferedReader 包装所有其 read() 操作可能开销很高的 Reader(如 FileReader 和 InputStreamReader)。例如,

BufferedReader in
= new BufferedReader(new FileReader("foo.in"));
将缓冲指定文件的输入。如果没有缓冲,则每次调用 read() 或 readLine() 都会导致从文件中读取字节,并将其转换为字符后返回,而这是极其低效的。
可以对使用 DataInputStream 进行按原文输入的程序进行本地化,方法是用合适的 BufferedReader 替换每个 DataInputStream。

简单点说,它就是一个带缓冲的输入流,并且可以包装其他的Read ,提高效率。 懂了吗? 不清楚的话,可以再问我哦!本回答被提问者和网友采纳
参考技术B io中的Reader对象
读数据的,类似输入输出流,有缓冲,效率高

请问JAVA中的BufferedReader是啥意思?

叫“缓存阅读器” 吗?
写错了,是BuffereReader

BufferedReader是缓存流的一个类。

缓存流是计算机领域中输入输出流的一种常见形式。包括BufferedInputStream/ BufferedOutputStream 类和BufferedReader/ BufferedWriter类。

BufferedReader从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。缓存流是过滤流,在创建具体流时需要给出一个InputStream / OutputStream 类型的流座位前端流,并可以指明缓冲区的大小。

扩展资料:

输入输出原理:

BufferedReader和BufferedWriter类各拥有8192个字符的缓冲区。当BufferedReader在读取文本文件时,会先尽量从文件中读入字符数据并放满缓冲区,而之后若使用read()方法,会先从缓冲区中进行读取。

如果缓冲区数据不足,才会再从文件中读取,使用BufferedWriter时,写入的数据并不会先输出到目的地,而是先存储至缓冲区中。如果缓冲区中的数据满了,才会一次对目的地进行写出。

BufferedReader字符流以字符为单位传输数据的流,输入流程序可以从中读取数据的流。

参考资料来源:百度百科-缓存流

参考资料来源:百度百科-java.io

参考技术A

BufferedReader是一个字符串缓冲流。它是为了提供读的效率而设计的一个包装类,它可以包装字符流。可以从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。

扩展资料:

1Java中,为了提高字符流读写的效率,引入了缓冲机制,进行字符批量的读写,提高了单个字符读写的效率。BufferedReader用于加快读取字符的速度,BufferedWriter用于加快写入的速度

2BufferedReader和BufferedWriter类各拥有8192个字符的缓冲区。

2.1当BufferedReader在读取文本文件时,会先尽量从文件中读入字符数据并放满缓冲区,而之后若使用read()方法,会先从缓冲区中进行读取。如果缓冲区数据不足,才会再从文件中读取。

2.2使用BufferedWriter时,写入的数据并不会先输出到目的地,而是先存储至缓冲区中。如果缓冲区中的数据满了,才会一次对目的地进行写出。

参考资料:

oracle官方API--BufferedRead



参考技术B

BufferedReader是Java中的一个类,它从字符输入流中读取文本,缓冲字符,以便有效地读取字符,行和数组。通常,由Reader构成的每个读取请求都会导致相应的读取请求由基础字符或字节流构成。因此,优良作法是将BufferedReader包装在任何read()操作可能代价高昂的Reader上,例如FileReaders和InputStreamReaders。

扩展资料:

与BufferedReader向对应的输出流是BufferedWriter

    BufferedWriter是java.io.Writer类的子类。

    BufferedWriter将文本写入字符输出流,缓冲字符,以便有效地写入单个字符,数组和字符串。

    可以指定缓冲区大小,或者可以使用默认大小。对于大多数用途,默认值足够大。

    BufferedWriter用于制作更低级的类,如FileWriter更高效和更易于使用。与FileWriters相比,BufferedWriters一次将相对较大的数据块写入文件,从而最大限度地减少了执行文件写入速度缓慢的次数。

    BufferedWriter类还提供了newLine()一种自动创建特定于平台的行分隔符的方法。

    通常,Writer会立即将其输出发送到基础字符或字节流。除非需要提示输出,否则建议将BufferedWriter包装在任何write()操作成本可能很高的Writer周围,例如FileWriters和OutputStreamWriters。

参考技术C

JAVA中的BufferedReader是缓冲字符输入流。

在Java中,把能够读取一个字节序列的对象称作一个输入流;而我们把能够写一个字节序列的对象称作一个输出流。它们分别由抽象类InputStream和OutputStream类表示。

调用iostream输入数据时,若用户输入的数据类型与要求的不符(比如要求读入整数而用户输入的不是数字),则cin会被设置为fail(可以用!cin判断),而用户输入的数据仍然留在流缓冲区里,需要手动清空。

扩展资料:

流提取符">>"从流中提取数据时跳过输入流中的空格、tab键、换行符等空白字符。注意:只有在输入完数据再按回车键后,该行数据才被送入键盘缓存区,形成输入流,提取运算符">>"才能从中提取数据。需要注意保证从流中读取数据能正常运行。

例如:

int a,b;

cin>>a>>b;

若从键盘中输入:21 abc 回车

变量a从输入流中提取整数21,提取操作成功,此时cin流出于正常状态。cin跳过读取空格,读取下一段缓冲区,但在变量b准备提取一个整数时,遇到了字母a,显然提取操作失败了,此时,cin流被置为出错状态。

只有在正常状态,才能从输入流中提取数据。

参考技术D 你好,叫什么无所谓,个人喜好而已。关键是他有什么功能。
这么说吧,这个类就是一个包装类,它可以包装字符流,将字符流放入缓存里,先把字符读到缓存里,到缓存满了或者你flush的时候,再读入内存,就是为了提供读的效率而设计的。本回答被提问者采纳

以上是关于在Java中,BufferedReader 是一个啥类啊,有啥作用啊的主要内容,如果未能解决你的问题,请参考以下文章

java中的BufferedReader语句如何用?

BufferedReader可以在Java中自动关闭吗

java中BufferedReader的问题 一个程序中如何多次调用BufferedReader 我第二次调用的时候无法读取数据 如

如何在 Java 中使用 BufferedReader [关闭]

如何在 Java 中使用 BufferedReader 反转希腊字母?

【java】BufferedReader的问题