精通IO流(2)-io流有哪些及应用场景

理解含义更好,不理解就记住背过。

什么是字节流和字符流?

IO流分为字节流和字符流;顾名思义就能知道是因为其中数据格式区分的,字节流中数据格式为字节,字符流中数据格式为字符。

记住只要处理的是文本文档就用字符流;例如excel、word、txt等;其他的例如pdf、图片等各种包就用字节流。

io流家族

一看上图就就头皮发麻,太多了。感觉麻烦的可以看看【】【】理解下io流的概念,这里就是简单的列几个比较简单的说常用类的应用。

java是面向对象的,也就是研究的时候看IO流功能中有哪些类,这些类都是干什么的?什么时候用就可以了?就算有一百个类肯定这些类都有不同的作用(看似废话),看他们都有什么属性?都有哪些方法?开始不要想着多个类的交互,单纯的研究某个或者某家族的类。例如我们常用的String,工作中我们要处理字符串就会时用String类的对象,String类能存放我们的字符串,能剪切、对比、替换我们的字符串。同理,我们也如此的去研究IO流,工作中遇到读取文件,就要想到用IO流的类,那个类呢?

每个类的应用场景

字节流和字符流如何选择?

上面说了,只要处理的不是文本文件都用字节流,文本文件就要字符流。原因:字符流处理文档会更快,字节流处理文本文件是要先转字符后操作,多了一步。因为计算机数据都是字节的,所以字节流能处理任何文件。Reader、Writer字符类是父类,InputStream、OutputStream是字节流父类,他们是抽象类。

什么时候选FileInputStream和FileOutputStream?

只要处理磁盘上的文件都可以用,我想读磁盘上的东西就用FileInputStream,想输出数据到磁盘中就用FileOutputStream。对IO流还不熟的时候用这两这类没毛病,项目绝对能运行,企业级项目也不会涉及到多少人要什么高性能。但是这两个类比较基础,可以用装饰器的模式增加一些用途和有点,下面说。

什么时候用FileReader和FileWriter

只要处理磁盘上的文件,而且这个文件是文本,就选择用着两个(注意字符集)。原因:文本文件就用字符流,但是字符集分为GBK、UTF-8、ASCII等,所以根据utf-8格式的文件建立的流,输出到其他格式肯定是乱码的。这个就要用到InputStreamReader和OutputStreamWriter

什么时候用InputStreamReader和OutputStreamWriter

只要某个字节流处理的是文本文件,无论是想用利用下字符流提高高效,还是想转换字符集都可以用着两个类。1、提高效率的原因是自己操作文本文件需要先转字符,提前用字符流会快。2、字符集转换,例如我们输入的时候是gbk格式,输出想要utf格式,就可以用这两个类。

什么时候用BufferedInputStream和BufferedOutputStream,BufferedReader和BufferedWriter

想高效就用这四个类,大于几十兆的文件最好用这几个类。

其他

还有其他的类,以后再补充

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

knight郭志斌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值