Java中的IO流分为两种,一种是字节流,另一种是字符流。字节流由InputStream和OutputStream两个抽象类表示,字符流由Reader和Writer两个抽象类表示。每种流都包括输入和输出两种形式,所以一共有四种流。
另外,Java中还有其他多种多样变化的流,例如文件流、缓冲流、数据流等等。文件流用于读写文件,缓冲流用于提高读写效率,数据流用于读写基本数据类型和字符串等。
关于BIO、NIO、AIO的区别,它们都是Java中用于处理IO的不同方式。BIO(Blocking IO)是传统的阻塞式IO,它的特点是每个IO操作都会阻塞线程,直到操作完成。NIO(Non-blocking IO)是Java 1.4引入的新IO模型,它使用了选择器(Selector)和通道(Channel)的概念,可以实现非阻塞的IO操作。AIO(Asynchronous IO)是Java 7引入的新IO模型,它使用了异步回调的方式处理IO操作,可以实现更高效的IO处理。
总结一下它们的区别:
- BIO是阻塞式IO,NIO是非阻塞式IO,AIO是异步IO。
- BIO每个IO操作都会阻塞线程,NIO可以通过选择器实现非阻塞IO,AIO使用异步回调方式处理IO操作,不会阻塞线程。
- NIO和AIO相比,具有更高的性能和更好的扩展性。
所以,Java中的IO流分为四种基本流(字节流和字符流),以及其他多种变化的流。而BIO、NIO、AIO是Java中不同的IO模型,用于处理IO操作的方式。