1. Java I/O
Java I/O概述:
Java的I/O系统非常强大和灵活,它的设计模式基于装饰器模式。主要包括:字节流(InputStream / OutputStream)、字符流(Reader / Writer)、缓冲流(Buffered)、对象流(Object I/O)以及数据流(Data I/O)。它们都在java.io包下。
字节流和字符流:
字节流(InputStream / OutputStream):是最基础的I/O流,它们以字节为单位进行操作,属于低级流。这种方式适合处理所有类型的数据,如:文本、图片、音频、视频等。但操作文本文件时可能会出现中文乱码问题,因为一个中文在UTF-8编码中可能会占用多个字节。
字符流(Reader / Writer):它们是处理字符数据的,以字符为单位进行操作。相较于字节流,字符流可以直接读取或写入字符的方法,无需自己负责字符和字节的转换,使得读写字符数据更加方便。但字符流只能处理文本文件,不能处理比如图片、音频等二进制文件。
输入/输出流:
输入流:Java的输入流主要用于从源(文件、网络连接、内存缓存、控制台等)读取数据。我们可以使用InputStream或Reader的方法(例如,read())从输入流中读取数据。
输出流:Java的输出流主要用于向目标(文件、网络连接、内存缓存、控制台等)写入数据。我们可以使用OutputStream或Writer的方法(例如,write())向输出流中写入数据。
缓冲流:
缓冲流(BufferedInputStream,BufferedOutputStream,BufferedReader,BufferedWriter)在创建时会创建一个内部缓冲区。当我们读取数据时,缓冲流会一次读取多个字节的数据到缓冲区,然后逐个返回这些数据;当我们写入数据时&#x