什么是BufferedWriter字符缓冲输出流?

BufferedWriter的中文意思就是字符缓冲输出流,可以写入单个字符,也可以写入字符数组,或者是字符串的某一部分,一句话就是非常好用。

下面是BufferedWriter实例中一个最简单的结构。


public static void main(String[] args) {

BufferedWriter bw = null;

bw = Files.newBufferedWriter("test.txt", StandardCharsets.UTF_8);

bw.write("hello");//写入单个字符
bw.write("world");
bw.write("!!!");
bw.newLine();
bw.flush();
bw.close();
}

这里必须调用bw.flush()方法,这个方法会刷新一下该缓冲流,也就是会把数据写入到目的文件里去,不然数据都还是只写在缓冲区里,没有写入文件的。


//Writes a string.

public void write(String str) throws IOException {
    write(str, 0, str.length());
}

BufferedWriter中的另外一个重要方法write(),这是一个核心方法,继承子父类,对缓存区内写入字符串的作用,可以是单个字符串或者是多个字符串组。

newLine方法:提供了一个newLine()方法,它使用平台自己的行分隔符概念 用于进行输出的时候做换行操作且自动适用平台的换行分隔符,而非自定义的,比较灵活。 写入行分隔符。行分隔符字符串由系统属性<tt>行。分隔符</tt>,不一定是单个换行符('\\n')字符。

public void newLine() throws IOException {
    write(lineSeparator);
}

public void write(String str) throws IOException {
    write(str, 0, str.length());
}

下面是一个实际案例,使用BufferedWriter 打开一个本地文件

String filename = "BufferedWriterTestVisit-2021-11-28.csv";

BufferedWriter bw = null;
File csvFile = null;
try {
    csvFile = new File(systemConfig.getExportFilePath() + filename);
    File parent = csvFile.getParentFile();

    if (parent != null && !parent.exists()) {

        parent.mkdirs();

    }
    csvFile.createNewFile();

    bw = Files.newBufferedWriter(Paths.get(systemConfig.getExportFilePath()+filename), StandardCharsets.UTF_8);

    List<String> headList = Lists.newArrayList();

    headList.add("测试BufferedWriter的头部内容");
    headList.add("第一列内容");
    headList.add("第二列内容");
    headList.add("第三列内容");
    //写入头部
    writeRow(headList,bw);

   
    writeRow(dataList,bw);

    };

    bw.flush();

封装的writeRow方法。主要内容就是将字符串内容列表一一读取通过write方法写入到BufferedWriter对象中。

private  void writeRow(List row, BufferedWriter csvWriter) throws IOException {

    // 写入文件头部

    for (Object data : row) {

        StringBuffer sb = new StringBuffer();
// 通过StringBuffer对象组装rowStr字符串,例如data=123456,得到的rowStr就是"123456",
        String rowStr = sb.append(""").append(data).append("",").toString();

        csvWriter.write(rowStr);

    }

    csvWriter.newLine();

}

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值