流(Stream):
流代表着任何有能力产出数据的源或者也能力接收数据的源对象,作用是为了将数据源跟目的地建立一个输送的通道。
流中比较重要的就是IO流了。下面我们先讲一讲IO流
IO流根据方向分为输入流与输出流,这个很好理解,输入进来的叫输入流,反之,向外输出的,叫输出流。
根据形式:分为字符流,和字节流。这个也不难,字节流是基本就是无法用字符表示的,图片、视频、音频等,而字符流,一般可以用字符表示的,txt,xlsx,java,html等。
根据功能不同,可分为:节点流,处理流。节点流是直接操作文件,处理流是连接已经存在的流。
下图是IO流的四大流:
四大流都是抽象类,不能直接创建对象,需要去new一个他的实现类。本文讲解的一般都是概念性的内容,如果有需要具体代码的亲们,可以留言找我,下面我会放一些经常会问的关于IO流的初级面试题(高级的后续我会写)
1.流按照实现功能分为哪两种,分别举例说明:
答:节点流,处理流
节点流:OutputStream
处理流:OutputStreamWriter
2.BufferedReader属于哪种流,它主要是用来做什么的,它里面有那些经典的方法
答:属于处理流中的缓冲流,可以将读取的内容存在内存里面,有readLine()方法。
3.如果我要对字节流进行大量的从硬盘读取,要用那个流,为什么?
答:BufferedInputStream 使用缓冲流能够减少对硬盘的损伤.
4.如果我要打印出不同类型的数据到数据源,那么最适合的流是那个流,为什么?
答:Printwriter 可以打印各种数据类型.
5.把一个对象写入数据源或者从一个数据源读出来,用哪两个流?
答:ObjectInputStream ObjectOutputStream.
6.流一般需要不需要关闭,如果关闭的话在用什么方法,一般要在那个代码块里面关闭比较好,处理流是怎么关闭的,如果有多个流互相调用传入是怎么关闭的?
答:流一旦打开就必须关闭,使用close方法,放入finally语句块(finally 语句一定会执行),调用的处理流就关闭处理流,多个流互相调用只关闭最外层的流.
7.Java中的所有的流可以分为几大类,它们的名字是什么,各代表什么?
答:字节输入流 InputStream
字节输出流 OutputStream
字符输入流 Reader
字符输出流 Writer
8.用什么把对象动态的写入磁盘中,写入要实现什么接口。
答:ObjectInputStream,需要实现Serializable接口。
关注我,每天变强一点点!