第8章-第5节-Java中的字符流

1、字节流可以进行任意文件类型的读取(文本文件,图片,音频,视频等),因为任意文件最终都是以字节存储在计算机中。但是,其实我们大多数的情况下,读取的都是纯纯的文本文件,那么以字节来读取显然效率不是那么的高,那么,此时如果以字符为单位来进行读取,效率会高很多,所以,就出现了字符流,接下来,我们就来学习字符流。

2、转换流:转换流是字节流到字符流之间的桥梁。转换流 = 字节流 + 编码集  

1)、构造方法:

方法名说明
InputStreamReader(InputStream in)使用默认字符编码创建InputStreamReader对象
InputStreamReader(InputStream in,String chatset)使用指定的字符编码创建InputStreamReader对象
OutputStreamWriter(OutputStream out)使用默认字符编码创建OutputStreamWriter对象
OutputStreamWriter(OutputStream out,String charset)使用指定的字符编码创建OutputStreamWriter对象

2)、案例:

        // 1. 定义一个转换输入流                 
        InputStreamReader reader =
                new InputStreamReader(new FileInputStream("test\\听妈妈的话.txt"), "UTF-8");
        // 每次读取一个字符
        int read = reader.read();
        System.out.println((char)read);
        reader.close();

        // 2. 定义一个转换输出流
        OutputStreamWriter writer =
                new OutputStreamWriter(new FileOutputStream("test\\听妈妈的话.txt", true), "UTF-8");
        writer.write("\n");
        writer.write('狠');
        writer.close();

 3、字符输出流:FileWriter是转换流的子类,进行了更好的封装,使我们在操作字符文件的时候更加的方便,优雅

1)、构造方法:

方法名说明
public FileWriter(String fileName)指向具体的文件,覆写,使用系统默认的编码
public FileWriter(String fileName, boolean append)指向具体的文件,追加写,使用系统默认的编码
public FileWriter(File file)指向具体的文件,覆写,使用系统默认的编码
public FileWriter(File file, boolean append)指向具体的文件,追加写,使用系统默认的编码

2)、常用方法:

方法名说明
void write(int c)写一个字符
void write(char[] buf)写入一个字符数组
void write(char[] buf, int off, int len)写入字符数组的一部分
void write(String str)写一个字符串
void write(String str, int off, int len)写一个字符串的一部分
方法名说明
flush()刷新流,之后还可以继续写数据
close()关闭流,释放资源,但是在关闭之前会先刷新流。一旦关闭,就不能再写数据

3)、案例:

        // 1. 创建字符输出流
        FileWriter writer = new FileWriter("test\\听妈妈的话.txt");
        // 写出单个字符
        writer.write('我');

        // 写出一个字符数组
        char[] chs = {'爱', '你'};
        writer.write(chs);

        // 刷新流,将缓冲区的内容写出到文件
        writer.flush();

        // 写出一个字符串
        writer.write("真真的");

        writer.close();

 4、字符输入流:

1)、构造方法:

方法名说明
public FileReader(String fileName)指向具体的文件,使用系统默认的编码
public FileReader(File file)指向具体的文件,使用系统默认的编码

2)、常用方法:

方法名说明
int read()一次读一个字符数据
int read(char[] cbuf)一次读一个字符数组数据

3)、案例:

        // 1. 定义一个字符输入流
        FileReader reader = new FileReader("day16_io\\aa.txt");
        
        // 每次读取一个字符
        int read = reader.read();
        System.out.println((char)read);

        // 每次读取一个字符数组
        char[] chs = new char[16];
        int len = reader.read(chs);
        String str = new String(chs, 0, len);
        System.out.println(str);
        
        // 2. 关闭资源
        reader.close();

 本电子书目录:《Java基础的重点知识点全集》

  • 12
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zwarwolf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值