博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
各种IO流之间的关系和区别
阅读量:3888 次
发布时间:2019-05-23

本文共 834 字,大约阅读时间需要 2 分钟。

InputStream,OutputStream  前者为字节输入流,后者为字节输出流。为所有字节流的顶级父类。

Reader   Writer  前者为字符输入流,后者为字符输出流。为所有字符流的顶级父类。
四个均为抽象类。

 

FileInputStream与FileReader区别:

FileInputStream是字节流,FileReader是字符流,用字节流读取中文的时候,可能会出现乱码,而用字符流则不会出现乱码,而且用字符流读取的速度比字节流要快;

字节流读取单位为一个字节,字符流读取单位为一个字符  所以读取汉字的时候,如果用字节流就会导致读出来乱码。这是最常用的地方  其他基本用法差不多。

 

ObjectOutputStream与ByteArrayOutputStream的区别:

ObjectOutputStream可以将java对象写入outputstream流中(序列化),然后进行持久化,此对象必须是实现了java.io.Serializable 接口;

ByteArrayOutputStream是将数据写入byte数组中。

 

转换流:InputStreamReader和OutputStreamWriter:其作用是为了将字节流InputStream,OutputStream转换为

字符流,这样会有效的提高文件传输的速度。具体使用方法:

  • public InputStreamReader(InputStream in)

  • public InputSreamReader(InputStream in,String charsetName)

 

 Java的IO模型设计非常优秀,它使用Decorator(装饰者)模式,按功能划分Stream,您可以动态装配这些Stream,以便获得您需要的功能。

       例如,您需要一个具有缓冲的文件输入流,则应当组合使用FileInputStream和BufferedInputStream。

 

附带几张各输入输出流类之间的关系:

你可能感兴趣的文章
iOS 侧滑菜单封装Demo(类似QQ侧滑效果)
查看>>
Spring学习(二)
查看>>
Spring学习(三)
查看>>
Spring学习(四)
查看>>
java解惑——易错知识点归纳总结
查看>>
Memcached 集群部署
查看>>
Memcached与Spring AOP构建数分布式据库前端缓存框架
查看>>
数据挖掘常用算法整理
查看>>
JNDI学习总结(一)——JNDI数据源的配置
查看>>
JNDI学习总结(二)——Tomcat下使用C3P0配置JNDI数据源
查看>>
JNDI学习总结(三)——Tomcat下使用Druid配置JNDI数据源
查看>>
JavaWeb学习总结(四十九)——简单模拟Sping MVC
查看>>
Struts1和Struts2的区别和对比(完整版)
查看>>
在Eclipse中初用lucene
查看>>
lucene在eclipse下运行
查看>>
eclipse 安装struts2 插件
查看>>
Liferay配置文件Tag标签参考
查看>>
JavaLiferay研究之十六:FCKeditor如何插入服务器上的资源?
查看>>
Liferay研究之十二:对Liferay框架的几点分析总结 收藏
查看>>
Eclipse快捷键大全(转载)
查看>>