所谓的转换流指的是可以实现字节流与字符流操作的功能转换,例如:进行输出的时候OutputStream需要将内容变为字节数组后才可以进行输出,而Writer可以直接输出字符串,这一点是方便的,所以很多人就认为需要提供有一种转换的机制,来实现不同流类型的转化操作,为此在java.io包里面提供有两个类:InputStreamReader、OutputStreamWriter。

InputStreamReader:

OutputStreamWriter:

定义

public class OutputStreamWriter extends Writer

public class InputStreamReader extends Reader

构造方法

public OutputStreamWriter​(OutputStream out)

public InputStreamReader​(InputStream in)

通过类的继承结构与构造方法可以发现,所谓的转换处理就是将接收到的字节流对象通过向上转型变为字符流对象。

范例:观察转换

 import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
public class JavaAPIDemo {
public static void main(String[] args) throws Exception {
File file = new File("D:" + File.separator + "hello" + File.separator + "mldn.txt");
if (!file.getParentFile().exists()) {
file.getParentFile().mkdirs(); // 父目录必须存在
}
OutputStream output = new FileOutputStream(file) ;
Writer out = new OutputStreamWriter(output) ; // 字节流变为字符流
out.write("www.mldn.cn"); // 直接输出字符串,字符流适合于处理中文
out.close();
}
}

JavaAPIDemo

讲解转换流的主要目的基本上不是为了让开发者去记住它,而是知道有这样一种功能,但同时更多的是需要进行结构的分析处理。通过之前的字节流与字符流的一系列的分析之后你会发现OutputStream类有FileOutputStream直接子类、InputStream类有FileInputStream直接子类,但是来观察一下FileWriter、FileReader类的继承关系。

FileWriter

FileReader

public class FileWriter  extends OutputStreamWriter

public class FileReader extends InputStreamReader

实际上所谓的缓存都是指的是程序中间的一道处理缓冲区。

最新文章

  1. "高大上" 名词整理
  2. [Educational Codeforces Round 16]B. Optimal Point on a Line
  3. 【python cookbook】【数据结构与算法】9.在两个字典中寻找相同点
  4. 把工程部署在tomcat的root路径下
  5. POJ 3440 Coin Toss(求概率)
  6. css笔记11:选择器练习
  7. react 编写组件 五
  8. vs2013+sql server2012
  9. Content-Disposition的使用和注意事项(转载)
  10. mvc拦截器
  11. 前端数据存储方案集合(cookie localStorage等)以及详解 (一)
  12. 三:C#对象转换Json时的一些高级(特殊)设置;
  13. 第十三节,使用带有全局平均池化层的CNN对CIFAR10数据集分类
  14. 通过GCEASY 和 jfr 发现运行时问题
  15. AOP在大规模软件开发项目中的应用(图)
  16. JS DOM操作思维导图
  17. scala 学习笔记八 简洁性
  18. [ML]熵、KL散度、信息增益、互信息-学习笔记
  19. Python学习之——Oracle数据库连接
  20. EL(表达式)语言的几种运算符

热门文章

  1. AVR单片机教程——EasyElectronics Library v1.1手册
  2. 如何评价一个VR体验设计?
  3. Kafka 异步消息也会阻塞?记一次 Dubbo 频繁超时排查过程
  4. Java 爬虫遇到需要登录的网站,该怎么办?
  5. MongoDB 学习笔记之 WriteConcern
  6. MongoDB 学习笔记之 分析器和explain
  7. LitePal的查询
  8. C# 获取顶级(一级)域名方法
  9. .net cookie跨域请求指定请求域名
  10. Java编程思想——第17章 容器深入研究 读书笔记(二)