黑马程序员——基础知识——字符流

------ Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

Day21

21.01 字符流FileReader

       Reader和Writer是字符流的抽象基类

       Reader

              InputStreamReader

                     FileReader方法都来自父类

       1、字符流是什么

              字符流是可以直接读写字符的IO流

              计算机存储的是字节

              字符流读取字符,就要先读取到字节数据,然后转为字符,如果要写出

字符,需要把字符转为字节再写出,其中间有一个转换动作。

       2、FileReader

              FileReader类的read方法可以按照字符大小读取


21.02 字符流FileWriter

       Writer

              OutputStreamWriter

                     FileWriter方法都来自父类

       FileWriter类的write方法可以自动把字符转为字节输出


21.03 字符流的拷贝


21.04 什么情况下使用字符流

       1、字符流也可以拷贝文本文件,但不推荐使用,因为读取时会把字节转为字符,写出时还要把字符转回字节

       无论拷贝纯文本,还是非文本,都建议用字节流,因为字符流麻烦,会先将字节转为字符,再将字符转为字节。而字节流一直操作的就是字节。

       2、程序需要读取一段文本,或者需要写出一段文本的时候可以使用字符流

       即只读或只写的时候用字符流

字符流读取中文不会出现半个中文,因为是通过码表(字符的大小)去读的,直接读取一个中文。

写出的时候可以直接将字符串写出,不用转换为字节数组

 

21.05 字符流是否可以拷贝非纯文本的文件

       不可以拷贝非纯文本的文件

       因为在读的时候会将字节转换为字符,在转换过程中,两个字节连起来后可能不是字符即找不到对应的字符,就会用?代替,写出的时候会将字符转换成字节写出去,如果是?的话,会将?直接写出,就使得一部分字节没有写过去,这样写出之后的文件就乱了,看不了了。

 

21.06 自定义字符数组的拷贝



21.07 带缓冲的字符流

       构造中需要接收Reader,即其子类对象,相当于装饰。

       1、BufferedReader的read方法读取字符时会一次读取若干字符到缓冲区,然后逐个返回给程序,降低到硬盘读取文件的次数,在内存中进行一系列动作,提高效率。

       2、BufferedWriter的write方法写出字符时会先写到缓冲区,缓冲区写满时才会写到文件,降低到硬盘写文件的次数,提高效率


21.08 readLine和newLine方法

       BufferedReader的readLine方法可以读取一行字符(不包含换行符号)

       BufferedWriter的newLine可以输出一个跨平台的换行符号“\r\n”


21.09 将文本反转

       1、将一个文本文档上的文本反转,第一行和倒数第一行交换,第二行和倒数第二行交换,以此类推。


21.10 LineNumberReader

       LineNumberReader是BufferedReader的子类,具有相同的功能,并且可以统计行号。默认情况下,行编号从 0 开始。要注意的是,setLineNumber(int) 不会实际更改流中的当前位置;它只更改将由 getLineNumber() 返回的值。

       调用getLineNumber方法可以获取当前行号

       调用setLineNumber方法可以设置当前行号

      

就是使输出的文本前面多了一个行号


21.11 装饰设计模式

       设计模式其实就是一种套路,相当于肯德基、麦当劳等快餐店的模式,方便使用和推广。

       装饰设计模式,原来功能不够强大,现在让其功能更加强大


21.12 使用指定的码表读写字符

       FileReader是使用默认码表读取文件,如果需要使用指定码表读取,那么可以使用InputStreamReader(字节流,编码表)

       FileWriter是使用默认码表写出文件,如果需要使用指定码表写出,那么可以使用OutputStreamWriter(字节流,编码表)

       Gbk中一个中文代表两个字节,Utf-8中一个中文代表三个字节

      

       InputStreamReader是字符流,是字节流通向字符流的桥梁

OutputStreamWriter是字符流,是字符流通向字节流的桥梁


21.13 转换流图解

       画图分析转换流


21.14 获取文本上字符出现的次数

       获取一个文本上每个字符出现的次数,将结果写在times.txt上


21.15 试用版软件

       当我们下载一个试用版软件,没有购买正版的时候,每执行一次就会提醒我们还有多少次使用机会。用学过的IO流只是,模拟试用版软件,使用10次机会,执行一次就提醒一次您还有几次机会,    如果次数到了提示请购买正版


21.16 (File类)递归

       5的阶乘


21.17 练习

       需求:从键盘输入接收一个文件夹路径,打印出该文件夹下所有的.Java文件名



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值