ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2022-06-19 14:31:08  阅读:236  来源: 互联网

标签:字符 读取 缓冲 输入输出 字符集 BufferedWriter BufferedReader new out


大佬的理解->《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();
        }

标签:字符,读取,缓冲,输入输出,字符集,BufferedWriter,BufferedReader,new,out
来源: https://www.cnblogs.com/xiaoqigui/p/16390208.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有