百木园-与人分享,
就是让自己快乐。

文件输入输出处理(四)-字符缓冲流

大佬的理解->《Java IO(五) -- 字符流进阶及BufferedWriter,BufferedReader》

1、BufferedReader

BufferedReader高效字符流读取文件基本用法,自带缓冲区,读取文件效率高,支持逐行读取;

1.1 初始化

BufferedReader(Reader in) 默认缓冲字符数组(大小8192)
BufferedReader(Reader in, int sz) 自定义缓冲字符数组大小

1.2 读取文件内容

buffer1.txt文件内容

张三,23
李四,34
王五,34

逐行读取案例

try(BufferedReader bfrd = new BufferedReader(new FileReader(\"D:/test/buffer1.txt\"))){
    //使用逐行读取方式,读取文件
    String readLinestr = bfrd.readLine();

    //当读取内容为null的时候跳出循环
    while(readLinestr != null){
        System.out.println(readLinestr);
        //继续读取下一行
        readLinestr = bfrd.readLine();
    }

    System.out.println(\"逐行读取成功\");

}catch (Exception e){
    e.printStackTrace();
}

运行结果

张三,23
李四,34
王五,34
逐行读取成功

1.3 默认缓冲区

//默认缓冲区的大小为:8192个字符

源码

public BufferedReader(Reader in) {
    this(in, defaultCharBufferSize); //使用默认字符数组容量
}

private static int defaultCharBufferSize = 8192; //默认最大值为8192

2、BufferedWriter

BufferedWriter高效字符流写入文件基本用法,可以直接写整行,还可以换行(newLine());

2.1 初始化

BufferedWriter(Writer out) 默认缓冲字符数组(大小8192)
BufferedWriter(Writer out, int sz) 自定义缓冲字符数组大小

2.2写入文件内容

try(BufferedWriter bfwt = new BufferedWriter(new FileWriter(\"D:/test/buffer2.txt\"))){
    //写入内容
    String string = \"KH96,正在学习高效字符流写入\";
    //写入
    bfwt.write(string);
    //换行
    bfwt.newLine();
    bfwt.write(string+\",新的一行\");
    
    //刷新缓冲区
    bfwt.flush();

    System.out.println(\"高效字符写入完成\");

}catch (Exception e){
    e.printStackTrace();
}

3、InputStreamReader

InputStreamReader(InputStream in) 默认本地字符集
InputStreamReader(InputStream in, String charsetName) 自定义字符集

BufferedReader 通过InputStreamReader可以指定字符集读取文件的内容;

  try(
      //InputStreamReader提供了一个指定字符集的构造方法,创建输入字符对象,必须指定字符集跟文件字符集一致
      BufferedReader bfrd = new BufferedReader(new InputStreamReader(new FileInputStream(\"D:/test/end1.txt\"),\"gbk\"))
  ){
      //使用逐行读取方式,读取文件
      String readLinestr = bfrd.readLine();

      //循环读取,读取到文件末尾,返回null
      while(readLinestr != null){
          System.out.println(readLinestr);
          //继续读取下一行
          readLinestr = bfrd.readLine();
      }
      System.out.println(\"逐行读取成功\");

  }catch (Exception e) {
      e.printStackTrace();
  }

4、 OutputStreamWriter

OutputStreamWriter(OutputStream out) 默认本地字符集
OutputStreamWriter(OutputStream out, String charsetName) 自定义字符集

BufferedWriter 通过OutputStreamWriter可以指定字符集写入文件的内容;

  try(
        BufferedWriter bfrwt = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(\"D:/test/end1.txt\"),\"gbk\"))
        ){
            String str = \"测试指定文件字符集为gbk写入\";
            bfrwt.write(str);

            System.out.println(\"文件写入完成!!!\");

        }catch (Exception e) {
            e.printStackTrace();
        }

来源:https://www.cnblogs.com/xiaoqigui/p/16390208.html
本站部分图文来源于网络,如有侵权请联系删除。

未经允许不得转载:百木园 » 文件输入输出处理(四)-字符缓冲流

相关推荐

  • 暂无文章