字符输出流Writer

字符输出流Writer

java.io.Writer字符输出流,是所有字符输出流的顶层的父类,并且是一个抽象方法,这个父类中定义了一些共性的方法

子类共性的成员方法

  1. void write(char[] cbuf) 写入字符数组
  2. void write(int c) 写入单个字符
  3. void write(String str) 写入字符串
  4. void write(String str, int off, int len) 写入字符串的某一部分
  5. abstract void write(char[] cbuf, int off, int len) 写入字符数组的某一部分
  6. abstract void flush() 刷新该流的缓冲
  7. abstract void close() 关闭此流,但要先刷新它

由于Writer类同样是一个抽象类,所以这里我们通过他的孙子类FileWriter来解释说明Writer类

一、FileWriter类的构造方法

  1. FileWriter(String fileName) 根据给定的文件名构造一个 FileWriter 对象。
  2. FileWriter(File file) 根据给定的 File 对象构造一个 FileWriter 对象。

参数
① fileName:文件的路径
② file: 文件

在使用构造方法创建FileWriter类的对象的时候都干了什么?

① 创建以恶个FileWriter对象
② 会根据构造方法中传递的路径或者文件来创建一个文件
③ 会把FileWriter对象指向创建好的文件

二、字节输出流的基本使用

字符输出流的使用步骤:

  1. 创建FileWriter对象,构造方法当中绑定要写入数据的目的地
  2. 使用FileWriter中的方法write,把数据写入到内存缓冲区中(字符转换为字节的过程)
  3. 使用FileWriter中的方法flush,把内存缓冲区当中的数据,刷新到文件当中
  4. 释放资源(在释放资源的时候会把内存缓冲区当中的数据刷新到文件当中,所以第三步我们可以不去主动刷新)

示范(一)

 public static void main(String[] args) throws IOException {
//        创建FileWriter对象,构造方法当中绑定要写入数据的目的地
        FileWriter fw = new FileWriter("d:\\a.txt");
//        使用FileWriter中的方法write,把数据写入到内存缓冲区中
        fw.write("你好");
//        使用FileWriter中的方法flush,把内存缓冲区当中的数据,刷新到文件当中
        fw.flush();
//        释放资源
        fw.close();
    }

结果如下
在这里插入图片描述

注意:和字节输出流不同的是,如果我们不把内存缓冲区当中的数据刷新到文件中的话则不会显示出来我们写入的数据

示范(二)

 public static void main(String[] args) throws IOException {
//        创建FileWriter对象,构造方法当中绑定要写入数据的目的地
        FileWriter fw = new FileWriter("d:\\a.txt");
//        使用FileWriter中的方法write,把数据写入到内存缓冲区中
        fw.write("啦啦啦");
//        释放资源
        fw.close();
    }

结果如下:
在这里插入图片描述
注意:如果我们写了close方法的话,我们就可以省略flush方法,因为close方法会自动帮我们把数据从内存缓冲区中刷新到文件当中再关闭有关占用的资源

三、flush方法和close方法都含有刷新的功能,那么他们的区别是什么?

flush方法和close方法的区别就是

  • flush方法:将缓冲区中的数据刷新到文件当中后流对象依旧可以继续使用
  • close方法:先将缓冲区中的数据刷新到文件中,然后通知系统释放有关资源,释放完毕后流对象无法继续使用

四、字符输出流写数据的一些其他方式

1、 void write(char[] cbuf) 写入字符数组

 public static void main(String[] args) throws IOException {
        FileWriter fw = new FileWriter("d:\\a.txt");
        char[] chars = new char[]{'a', 'b','c'};
        fw.write(chars);
        fw.close();
    }

得到的结果为
在这里插入图片描述

2、 abstract void write(char[] cbuf, int off, int len) 写入字符数组的某一部分

 public static void main(String[] args) throws IOException {
        FileWriter fw = new FileWriter("d:\\a.txt");
        char[] chars = new char[]{'a', 'b','c'};
        fw.write(chars, 1, 2);
        fw.close();
    }

得到的结果为:
在这里插入图片描述


字符流的续写和换行和字节流的续写和换行同理,这里不再赘述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值