每天一道面试题 | day02

取得成就时坚持不懈,要比遭到失败时顽强不屈更重要。

----拉罗什夫科

第二题

谈谈对IO流的理解?

(1)字节流和字符流的区别

1)字节流读取的时候,读到一个字节就返回一个字节;字符流使用了字节流读到一个或多个字节(中文对应的字节数是两个,在UTF-8码表中是3个字节)时。先去查指定的编码表,将查到的字符返回。

2)字节流可以处理所有类型数据,如:图片,MP3,AVI视频文件,而字符流只能处理字符数据。只要是处理纯文本数据,就要优先考虑使用字符流,除此之外都用字节流。

(2)一些特别的流类型

转换流,转换流只有字节流转换为字符流,因为字符流使用起来更方便,我们只会向更方便使用的方向转化。如:InputStreamReader与OutputStreamWriter。

缓冲流,有关键字Buffered,也是一种处理流,为其包装的流增加了缓存功能,提高了输入输出的效率,增加缓冲功能后需要使用flush()才能将缓冲区中内容写入到实际的物理节点。但是,在现在版本的Java中,只需记得关闭输出流(调用close()方法),就会自动执行输出流的flush()方法,可以保证将缓冲区中内容写入。

对象流,有关键字Object,主要用于将目标对象保存到磁盘中或允许在网络中直接传输对象时使用(对象序列化)。

推回输入流,有关键字PushBack,当程序调用推回输入流的unread()方法时,系统回把指定数组内容的内容推回到一个推回缓冲区中,在调用read()方法读入内容时,就先从推回缓冲区中读取,直到读完推回缓冲区中内容后才会从原输入流中读取。

写在后面

本文章将以“指导面试,智取Offer”为宗旨,为广大Java开发求职者扫清面试道路上的障碍,成为面试官眼中的精英,朋友圈里的大神。在面试场上“胸有成竹”,坦然面对每个面试官的“拷问”,做到进可攻“项目经理、项目总监”等高级职务,视之为翘首可及;退可守“Java工程师、Java测试工程师”等职务,视之为探囊取物。无论进退、皆可立于不败之地。

The end

原文发布于微信公众号 - Java Life(gh_beea63cf3162)

原文发表时间:2019-07-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券