Java知识梳理之字符流

1. 字符流概念

  • 字符流的由来: 因为数据编码的不同,而有了对字符进行高效操作的流对象。本质其实就是基于字节流读取时,去查了指定的码表。字符流 = 字节流 + 编码表。 字节流和字符流的区别:

    • 读写单位不同:字节流以字节(8bit)为单位,字符流以字符为单位,根据码表映射字符,一次可能读多个字节。
    • 处理对象不同:字节流能处理所有类型的数据(如图片、avi等),而字符流只能处理字符类型的数据。
    • 结论:只要是处理纯文本数据,就优先考虑使用字符流。 除此之外都使用字节流。

​​​​​​​2. 字符流复制文本文件

public static void main(String[] args){
        try{
            File file = new File("/Users/xx/Desktop/test.txt");
            File file1 = new File("/Users/xx/Desktop/test1.txt");
            //流处理的设计模式是装饰者设计模式,所有我们要一步步创建
            //创建InputStreamReader并指定编码格式
            InputStreamReader inputStreamReader = new InputStreamReader(new FileInputStream(file),"gbk");
            OutputStreamWriter outputStreamWriter = new OutputStreamWriter(new FileOutputStream(file1));
            //缓冲区字符流处理提高文件处理效率
            BufferedReader bufferedReader  = new BufferedReader(inputStreamReader);
            BufferedWriter bufferedWriter = new BufferedWriter(outputStreamWriter);
            String s;
            //BufferedReader,String readLine():一次读取一行数据
            while ((s = bufferedReader.readLine())!=null){
                bufferedWriter.write(s);
                bufferedWriter.newLine();//BufferedWriter,newLine():根据系统来决定换行符
                bufferedWriter.flush();//刷新缓冲区
            }
            //释放资源
            bufferedReader.close();
            bufferedWriter.close();
        }catch (Exception e){
            System.out.println("error message : " + e.getMessage());
        }
    }

3. flush()和close()的区别:

  • A:close()关闭流对象,但是先刷新一次缓冲区。关闭之后,流对象不可以继续再使用了。
  • B:flush()仅仅刷新缓冲区,刷新之后,流对象还可以继续使用。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值