字符流产生的原因:

1.每次只能够读取一个字节或者一个字节数组,每次在需要转换成字符或者字符串的时候不是很方便
2.不同的操作系统针对换行符的处理不方便
3.有的时候会出现中文乱码(中文占两个字节,如果针对中文中某个字节做了转换或者显示,就会出现乱码)
4.如果需要读取某一行数据,非常不方便

编码

* String/char[] --> byte[]
* 解码
* byte[] --> String/char[]

我们可以对字符数组或者字符串进行编码,那么其实IO流底层是字符流或者字节流,所以我们一样可以对流的数据进行编码和解码

转换流

需求:使用字符流向文本里写入“HelloWorld”。
Writer(抽象类,不能直接使用,选择子类)
OutputStreamWriter(转换流,是字节流通向字符流的桥梁,可使用指定的 charset 将要写入流中的字符编码成字节。它使用的字符集可以由名称指定或显式给定,否则将接受平台默认字符集编码。)
构造方法
OutputStreamWriter(OutputStream out) 创建使用默认字符编码的字符输出转换流
OutputStreamWriter(OutputStream out, Charset cs) 创建使用cs字符集的字符输出转换流
OutputStreamWriter(OutputStream out, CharsetEncoder enc) 创建使用enc字符集编码器的
OutputStreamWriter(OutputStream out, String charsetName) 创建使用指定字符集的

转换流的核心功能在于将字节流转换成字符流,这样就能够使用更多好的方法来处理文本文件

FileWriter:用来写入字符文件的便捷类。此类的构造方法假定默认字符编码和默认字节缓冲区大小都是可接受的。要自己指定这些值,可以先在 FileOutputStream 上构造一个OutputStreamWriter。
FileReader:用来读取字符文件的便捷类。此类的构造方法假定默认字符编码和默认字节缓冲区大小都是适当的。要自己指定这些值,可以先在 FileInputStream 上构造一个 InputStreamReader。
  构造方法类似FileInputStream和FileOutputStream
  成员方法完全继承自父类OutputStreamWriter和InputStreamReader

高效字符流
  类似于字节流的BufferedOutputStream和BufferedInputStream,字符流同样存在字符缓冲流
  同理,字符缓冲流也是为了提高字符流的效率。
  BufferedWriter和BufferedReader继承自Writer和Reader,所以具备原有的读取方法,但是还存在自己特有的方法。
  特有的方法:
    BufferedWriter:void newLine()
    BufferedReader:String readLine()

最新文章

  1. MongoDB使用小结:一些常用操作分享
  2. JPA Hibernate应用实例
  3. DecimalFormat类
  4. Yii2 数据操作Query Builder(转)
  5. 有return语句情况下,try-catch-finally的执行顺序
  6. C++学习基础六——复制构造函数和赋值操作符
  7. Java Hour 44 Hibernate
  8. 局域网两台笔记本如何使用svn
  9. Oracle的Import用法
  10. Storm系列(六)架构分析之Scheduler-调度器[EventScheduler]
  11. HDOJ-ACM1010(JAVA) 奇偶剪枝法 迷宫搜索
  12. poj 4044 Score Sequence(暴力)
  13. 安卓中webview读取html,同时嵌入Flex的SWF,交互
  14. Linux命令:pushd
  15. parseInt ,parseDouble,parseFloat
  16. iOS-静态库,动态库,framework浅析(二)
  17. Win7 VS2013环境编译Squirrel 3.0.7
  18. 剑指offer编程题Java实现——面试题4替换空格
  19. [RTC]系统时间NTP和RTC同步,Debian的时区配置
  20. my.cnf配置优化

热门文章

  1. DevExpress控件使用之多重坐标图形的绘制 z
  2. linux下 signal信号机制的透彻分析与各种实例讲解
  3. phpstorm2017使用快捷键
  4. 杜比(dolby)自动关闭,windows10声音自动变小
  5. PTA练习题之6.1统计字符串中大小写字母的个数(10 分)
  6. C#图解教程读书笔记(第7章 类和继承)
  7. import(导入)过期的磁带 -----先留个引子,后期更改补充
  8. mybaitis动态sql利用bind标签代替%拼接完成模糊查询
  9. java 编写小工具 尝试 学习(三)
  10. JQuery给一个元素绑定两次点击事件(第二次点击事件)