Java SE IO流详解:从分类到核心类

需积分: 6 0 下载量 130 浏览量 更新于2024-07-09 收藏 445KB DOCX 举报
"这是关于Java基础中的IO流笔记,主要涵盖了IO流的分类、继承结构、常用方法以及不同类型的流之间的对比。" Java的输入/输出(IO)流系统是其强大的特性之一,允许程序与外部资源(如文件、网络、硬件设备等)进行数据交换。以下是对这些笔记的详细解释: 一、IO流分类 1. 按流向分类:Java中的IO流分为输入流(Input Stream)和输出流(Output Stream),分别用于从源获取数据和向目标发送数据。 2. 按照操作对象分:字节流(Byte Stream)处理单个字节的数据,字符流(Character Stream)处理Unicode字符数据,更适合文本处理。 3. 按照功能分:节点流(Stream)直接连接到数据源或目的地,如文件;处理流(Filter Stream)用于包装其他流,提供额外的功能,如缓存、转换等。 二、IO流继承结构图 Java的IO流体系基于两个基本抽象类:InputStream和OutputStream代表字节流,Reader和Writer代表字符流。它们各自都有许多子类,比如FileInputStream、FileOutputStream、FileReader和FileWriter,分别用于文件的字节和字符输入输出。 三、相关类常用方法 1. File类:提供文件和目录路径名的抽象表示,包含文件操作的相关方法,如创建、删除、重命名文件等。 2. InputStream/OutputStream:作为所有字节输入/输出流的基类,定义了基本的读写方法,如read()和write()。 3. Reader/Writer:作为所有字符输入/输出流的基类,提供了读写字符的方法,如read()和write()。 四、相关类对比 1. 节点流: - FileInputStream和FileOutputStream:处理所有类型文件,适合二进制数据,如图片、音频等。 - FileReader和FileWriter:专用于文本文件,避免乱码问题,支持字符编码。 2. 处理流: - BufferedInputStream和BufferedOutputStream:提供缓冲区,提高读写效率,如BufferedInputStream的mark()和reset()方法可以标记位置并回溯。 - BufferedReader和BufferedWriter:增强文本文件读写,提供如readLine()和newLine()等方便的文本处理方法。 3. 其他流: - DataInputStream和DataOutputStream:支持基本数据类型的直接读写,如int、double等,需要按照写入顺序读取。 - ObjectInputStream和ObjectOutputStream:用于对象的序列化和反序列化,写入的对象需实现Serializable接口,读写顺序必须一致。 IO流在Java编程中起着至关重要的作用,它使得数据的传输和存储变得简单而高效。了解并熟练掌握这些基础知识,将有助于编写出更加灵活和高效的程序。