类 BufferedReader

以前学习的时候也没有太在意,在项目中使用到了才发现呵呵

1.读取一个txt文件,方法很多种我使用了字符流来读取(为了方便)

FileReader fr = new FileReader("f:\\TestJava.java");
   BufferedReader bf = new BufferedReader(fr);

//这里进行读取

int b;
   while((b=bf.read())!=-1){
    System.out.println(bf.readLine());
   }

发现每行的第一个字符都没有显示出来,原因呢:b=bf.read())!=-1  每次都会先读取一个字节出来,所以后面的bf.readLine());
读取的就是每行少一个字节

所以,应该使用

String valueString = null;
   while ((valueString=bf.readLine())!=null){
    System.out.println(valueString);
   }

public class BufferedReader extends Reader

从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。

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

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

 BufferedReader in = new BufferedReader(new FileReader("foo.in"));
 

将缓冲指定文件的输入。如果没有缓冲,则每次调用 read() 或 readLine() 都会导致从文件中读取字节,并将其转换为字符后返回,而这是极其低效的。

通过用合适的 BufferedReader 替代每个 DataInputStream,可以对将 DataInputStream 用于文字输入的程序进行本地化。

方法摘要:

  void close()  关闭该流病释放与之关联的所有资源。

  int read()   读取耽搁字符

  String readeLine() 读取一个文本行。

构造方法详细信息

public BufferedReader(Reader in,int sz)
创建一个使用指定大小输入缓冲区的缓冲字符输入流。

参数:
in - 一个 Reader
sz - 输入缓冲区的大小
抛出:
IllegalArgumentException - 如果 sz <= 0
public BufferedReader(Reader in)
创建一个使用默认大小输入缓冲区的缓冲字符输入流。

参数:
in - 一个 Reader

方法详细信息

read

public int read()
         throws IOException
读取单个字符。
覆盖:
Reader 中的 read
返回:
作为一个整数(其范围从 0 到 65535 (0x00-0xffff))读入的字符,如果已到达流末尾,则返回 -1
抛出:

IOException - 如果发生 I/O 错误

readLine

public String readLine()
                throws IOException
读取一个文本行。通过下列字符之一即可认为某行已终止:换行 (‘\n‘)、回车 (‘\r‘) 或回车后直接跟着换行。
返回:
包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回 null
抛出:
IOException - 如果发生 I/O 错误

时间: 2024-11-14 13:01:31

类 BufferedReader的相关文章

JavaSE 高级 第16节 读取缓冲类BufferedReader

2016-07-24 字符流相关类:读取缓冲类 1,BufferedReader package com.java1995; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStreamReader; public class TestBuffere

java基础知识回顾之javaIO类---BufferedReader和BufferedWriter

使用了装饰设计模式:此类的设计是为了提高流操作数据的效率.思想就是定义容器将数据进行临时存储,对于缓冲区对象,其实就是将这个容器进行了分装,并提供了更高效的操作方法. 原理: 1,使用流的read方法从源中读取一批数据存储到缓冲区的数组中. 2,通过计数器记录住存储的元素个数. 3,通过数组的角标来获取数组中的元素(从缓冲区中取数据). 4,指针会不断的自增,当增到数组长度,会归0.计数器会自减,当减到0时,就在从源拿一批数据进缓冲区. BufferReader: package com.lp.

键盘输入数据的标准格式-BufferedReader

package bufferedreader; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; /* * java.io 类 BufferedReader :用于从缓冲区中读取内容,所有的输入字节数据都讲 * 构造方法: * BufferedReader(Reader in) 创建一个使用默认大小输入缓冲区的缓冲字符输入流. int read() 读取单个字符

java文件读写类及其用法介绍

IO类图如下: 1. File类 ①File类封装了对用户机器的文件系统进行操作的功能.例如,可以用File类获得文件上次修改的时间移动,或者对文件进行删除.重命名. File类的主要方法有:getName(),getCanonicalFile(),lastModified(),isDerector(),isFile(),getPath()等: ②File类与FileInputStream类的区别: 流类关注的是文件内容,而File类关注的是文件在磁盘上的存储. File不属于文件流,只能代表一

001-概述

一.程序语言基础 第一代语言.机器语言 示例:0000 0001 1101 10000 第二代语言.汇编语言 示例:ADD AX,BX 第三代语言[高级语言].结构化语言,Fortran.Basic.C.Pascal 面向对象(OO):Algo.Simula67.Ada.SmallTalk.C++.java.C# 示例:a+b 第四代语言.命令式语言,SQL 二.语言时序图 三.发展历史 版本 名称 发行日期 主要新特性 JDK 1.1.0   1996-01-23   JDK 1.1.4 Sp

装饰者设计模式

import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; /* 装饰者设计模式:增强一个类的功能,而且还可以让这些装饰类互相装饰. 装饰者设计模式的步骤: 1. 在装饰类的内部维护一个被装饰类的引用. 2. 让装饰类有一个共同的父类或者是父接口. 需求1: 编写一个类拓展BufferedReader的功能, 增强readL

《Java从入门到精通》第十二章学习笔记

第12章  输入和输出 一.流概述 流是指一组有序的数据序列,数据源和输出目标可以是文件,网络,压缩包或其他. 二.输入/输出流 所有输入流都是抽象类InputStream(字节输入流)或抽象类Reader(字符输入流)的子类:所有输出流都是抽象类OutputStream(字节输出流)和抽象类Writer(字符输出流)的子类. 1.输入流 InputStream是所有字节输入流的父类,该类主要方法如下,方法出现错误时候会引发IOException异常. (1)read():从输入流中读取数据的下

带缓存的字符输入输出流

缓存可以说是I/O的一种性能优化.缓存流为I/O流增加了内存缓存区.有了缓存区,使得在流上执行skip()\mark()和reset()方法都成为可能. 大纲: BufferedReader类与BufferWriter类 BufferedReader类与BufferWriter类分别继承了Reader类与Writer类.这两个类同样具有内部缓存机制,并可以行为单位行为单位进行输入.输出. 根据BufferedReader类的特点,可总结出字符数据读取文件的过程:字符数据==>BuffereaWr

计算机程序的思维逻辑 (58) - 文本文件和字符流

上节我们介绍了如何以字节流的方式处理文件,我们提到,对于文本文件,字节流没有编码的概念,不能按行处理,使用不太方便,更适合的是使用字符流,本节就来介绍字符流. 我们首先简要介绍下文本文件的基本概念.与二进制文件的区别.编码.以及字符流和字节流的区别,然后我们介绍Java中的主要字符流,它们有: Reader/Writer:字符流的基类,它们是抽象类. InputStreamReader/OutputStreamWriter:适配器类,输入是InputStream,输出是OutputStream,