zoukankan      html  css  js  c++  java
  • 类 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
    读取一个文本行。通过下列字符之一即可认为某行已终止:换行 (' ')、回车 (' ') 或回车后直接跟着换行。
    返回:
    包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回 null
    抛出:
    IOException - 如果发生 I/O 错误
  • 相关阅读:
    bzoj 1025: [SCOI2009]游戏【数学+dp】
    bzoj 1195: [HNOI2006]最短母串【状压dp】
    洛谷 P1083 借教室【二分+差分/线段树】
    bzoj 2151: 种树【贪心+堆】
    bzoj 1055: [HAOI2008]玩具取名【区间dp】
    bzoj 2152: 聪聪可可【点分治】
    bzoj 4552: [Tjoi2016&Heoi2016]排序【二分+线段树】
    bzoj 1103: [POI2007]大都市meg【dfs序+树状数组】
    bzoj 3751: [NOIP2014]解方程【数学】
    bzoj 3612: [Heoi2014]平衡【整数划分dp】
  • 原文地址:https://www.cnblogs.com/xs-yqz/p/4554986.html
Copyright © 2011-2022 走看看