前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >文件输入输出处理(四)-字符缓冲流

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

作者头像
化羽羽
发布2022-10-28 11:31:25
4630
发布2022-10-28 11:31:25
举报
文章被收录于专栏:化羽学Java

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

1、BufferedReader

代码语言:javascript
复制
BufferedReader高效字符流读取文件基本用法,自带缓冲区,读取文件效率高,支持逐行读取;

1.1 初始化

BufferedReader(Reader in)

默认缓冲字符数组(大小8192)

BufferedReader(Reader in, int sz)

自定义缓冲字符数组大小

1.2 读取文件内容

buffer1.txt文件内容

代码语言:javascript
复制
张三,23
李四,34
王五,34

逐行读取案例

代码语言:javascript
复制
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();
}

运行结果

代码语言:javascript
复制
张三,23
李四,34
王五,34
逐行读取成功

1.3 默认缓冲区

代码语言:javascript
复制
//默认缓冲区的大小为:8192个字符

源码

代码语言:javascript
复制
public BufferedReader(Reader in) {
    this(in, defaultCharBufferSize); //使用默认字符数组容量
}

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

2、BufferedWriter

代码语言:javascript
复制
BufferedWriter高效字符流写入文件基本用法,可以直接写整行,还可以换行(newLine());

2.1 初始化

BufferedWriter(Writer out)

默认缓冲字符数组(大小8192)

BufferedWriter(Writer out, int sz)

自定义缓冲字符数组大小

2.2写入文件内容

代码语言:javascript
复制
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可以指定字符集读取文件的内容;

代码语言:javascript
复制
  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可以指定字符集写入文件的内容;

代码语言:javascript
复制
  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();
        }
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-06-19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、BufferedReader
    • 1.1 初始化
      • 1.2 读取文件内容
        • 1.3 默认缓冲区
        • 2、BufferedWriter
          • 2.1 初始化
            • 2.2写入文件内容
            • 3、InputStreamReader
            • 4、 OutputStreamWriter
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档