1、I/O 流的分类
按照读写的单位大小来分:
⚫
字符流:以字符为单位,每次次读入或读出是 16 位数据。其只能读取字符类型数据。
(Java 代码接收数据为一般为 char 数组,也可以是别的)
⚫
字节流:以字节为单位,每次次读入或读出是 8 位数据。可以读任何类型数据,图片、文
件、音乐视频等。 (Java 代码接收数据只能为 byte 数组)
按照实际 IO 操作来分:
⚫
输出流:从内存读出到文件。只能进行写操作。
⚫
输入流:从文件读入到内存。只能进行读操作。
⚫
注意
:输出流可以帮助我们创建文件,而输入流不会。
按照读写时是否直接与硬盘,内存等节点连接分:
⚫
节点流:直接与数据源相连,读入或读出。
⚫
处理流:也叫包装流,是对一个对于已存在的流的连接进行封装,通过所封装的流的功能
调用实现数据读写。如添加个 Buffering 缓冲区。(意思就是有个缓存区,等于软件和
mysql 中的 redis)
⚫
注意
:为什么要有处理流?主要作用是在读入或写出时,对数据进行缓存,以减少 I/O 的
次数,以便下次更好更快的读写文件,才有了处理流。
2、字节流如何转为字符流?
字节输入流转字符输入流通过 InputStreamReader 实现,该类的构造函数可以传入
InputStream 对象。
字节输出流转字符输出流通过 OutputStreamWriter 实现,该类的构造函数可以传入
OutputStream 对象。
3、字节流和字符流,你更喜欢使用哪一个?
个人来说,
更喜欢使用字符流,因为他们更新一些。许多在字符流中存在的特性,字节流
中不存在。比如使用 BufferedReder 而不是 BufferedInputStreams 或 DataInputStream,
使用 newLine()方法来读取下
一行,但是在字节流中我们需要做额外的操作。
4、System.out.println 是什么?
println 是 PrintStream 的一个方法。out 是一个静态 PrintStream 类型的成员变量,
System 是一个 java.lang 包中的类,用于和底层的操作系统进行交互。
5、什么是 Filter 流?