IO流的分类

IO

IO,即IO流(输入输出流),浅显讲就是实现磁盘上的读取和写入,实际中除了磁盘,内存、网络都可以作为IO流的数据来源和目的地。


IO的分类

  • 按照流的流向分,可以分为输入流和输出流
  • 按照操作单元划分,可以分为字节流和字符流
  • 按照流的角色可以分为节点流和处理流

Java IO流共涉及到40多个类,但都是从以下4个抽象类基类中派生出来的:

  • InputStream/Reader: 所有的输入流的基类,前者是字节输入流,后者是字符输入流
  • OutputStream/Writer:所有输出流的基类,前者是字节输出流,后者是字符输出流

字节流和字符流的区别

区别

  • 字节流以字节为单位输入输出数据,即8bit传输
  • 字符流以字符为单位输入输出数据,即16bit传输

有字节流为什么还需要字符流

字符流是由JVM讲字节转换得到的,这个过程比较耗时,并且如果不知道编码类型容易出现乱码问题。所以IO直接提供了一个直接操作字符的接口方便对字符就行流操作。


常用的IO类

FileFileInputStreamFileOutputStreamBufferedInputStreamBufferedOutputStreamPrintWriterFileReaderFileWriterBufferedReader、BufferedWriterObjectInputStreamObjectOutputStream等。

Java IO流