JAVA面经-基础篇-IO流
1、介绍下Java中的IO流
IO(Input Output)用于实现对数据的输入和输出操作,Java把不同的输入/输出源(键盘、文件、网络等)抽象表述为流(Stream)。流是从起源到接收的有序数据,有了它就可以用同一种方式访问不同的输入/输出源。
分类:
1)按照数据流向:分为输入流和输出流。输入流只读不写,输出流只写不读。
2)按照数据类型:分为字节流和字符流。字节流操作8位的字节,字符流操作16位的字符。
3)按照处理功能:分为节点流和处理流。节点流可以从/向一个特定的IO设备输入/输出数据,也称低级流;处理流是对节点流的连接或封装,简化数据读写功能提高性能,也称高级流。
常用类:
Java提供了大量的类来支持IO操作,下表给大家整理了其中比较常用的一些类。其中,黑色字体的是抽象基类,其他所有的类都继承自它们。红色字体的是节点流,蓝色字体的是处理流。
根据命名很容易理解各个流的作用:
- 以File开头的文件流用于访问文件;
- 以ByteArray/CharArray开头的流用于访问内存中的数组;
- 以Piped开头的管道流用于访问管道,实现进程之间的通信;
- 以String开头的流用于访问内存中的字符串;
- 以Buffered开头的缓冲流,用于在读写数据时对数据进行缓存,以减少IO次数;
- InputStreamReader、InputStreamWriter是转换流,用于将字节流转换为字符流;
- 以Object开头的流是对象流,用于实现对象的序列化;
- 以Print开头的流是打印流,用于简化打印操作;
- 以Pushback开头的流是推回输入流,用于将已读入的数据推回到缓冲区,从而实现再次读取;
- 以Data开头的流是特殊流,用于读写Java基本类型的数据。