IO流 (三) ----- 字符流和字符缓冲流

相关文章:
  1. 《IO流 (一) ----- 基本概念和File类》
  2. 《IO流 (二) ----- 文件流》
  3. 《IO流 (三) ----- 字符流和字符缓冲流》
  4. 《IO流 (四) ----- 转换流和标准字节输出流》
  5. 《IO流 (五) ----- 对象数据的序列化和反序列化》


本篇涉及内容


  • 字符流FileReader和FileWriter详解
  • 缓冲流BufferedReader详解


文件字符输入流FileReader和文件字符输出流FileWriter


一、优点与缺点
  1. 优点:读取、写入文本内容时更加方便快捷。
  2. 缺点:只能读取普通文本文件(注意不一定只是.txt文件,能用记事本编辑的文件都属于普通文本文件)。
二、常用方法

FileReader

返回值函数名与形参功能
intread(char[] c)从文本中读取字符数组长度的字符到数组中,返回读取到的字符数量

FileWriter

返回值函数名与形参功能
voidwrite(char[] c)写入一个字符数组到文本中
voidwrite(char[] c, int off, int len)写入一个字符数组一部分到文本中
voidwrite(String str)写入一个字符串到文本中
voidwrite(String str, int off, int len)写入一个字符串的一部分到文本中
三、实现纯文本文件的拷贝
     FileReader fr = null;
     FileWriter fw = null;

     try {
             fr = new FileReader("src/StringStudy/FileReaderTest01.java");
             fw = new FileWriter("Test/copiedTextFile.java");

             char[] chars = new char[1024 * 512];// 一次拷贝1MB
             int readCount = 0;
             while((readCount = fr.read(chars)) != -1) {
                 fw.write(chars, 0, readCount);
             }

             fw.flush();
     }


字符缓冲输入流BufferedReader


一、特点

 本身带有缓冲区的字符流,使用该流可以不需要自定义char数组或byte数组。

二、构造方法

BufferedReader(Read reader)——需要传入一个字符流Reader作为参数

注意

  1. 当一个流的构造方法中需要传入一个流时,这个被传入的流叫做:节点流。
  2. 外部负责包装的这个流,叫做:包装流,或处理流。
  3. 对于下面这个程序来说FileReader就是节点流,BufferedReader就是包装流。
  4. 当存在节点流和包装流时,关闭流只需要关闭包装流即可自动关闭节点流。
三、常用方法
返回值函数名和形参功能
StringreadLine()读取一个文本行,当读取到末尾时返回null
        BufferedReader br = null;
        try {
            FileReader fr = new FileReader("src/StringStudy/BufferedReaderTest01.java");
            br = new BufferedReader(fr);
            String s = null;
			
			// 每次循环读取一个文本行,读到文本末尾时跳出循环
            while((s = br.readLine()) != null) {
                System.out.println(s);
            }

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (br != null) {
                try {
                    br.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

注意:readLine()方法不会读取每一行末尾的换行符\n

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值