Java IO学习笔记:概念、分类与转换

需积分: 9 8 下载量 87 浏览量 更新于2024-10-08 收藏 118KB PDF 举报
"Java IO总结.pdf 是一份关于Java输入/输出(I/O)系统的学习笔记,主要涵盖了Java I/O的基本概念、分类以及字节流和字符流之间的转换。 一、概念 Java I/O机制的核心在于流的概念,它表示从源到目的地的数据传输。流是一个连续的数据序列,可以在不同的时刻处理源的不同部分。Java I/O允许数据从源(如文件、内存、键盘、网络)读取到内存,并进一步将这些数据写入其他目的地(如文件、控制台、网络)。 二、分类 Java I/O流可以根据以下几个方面进行分类: 1. 按数据流向,分为输入流和输出流,输入流是从外部源读取数据,输出流是向外部目标写入数据。 2. 按数据单位,分为字节流(每次读取1个字节)和字符流(每次读取1个字符,每个字符通常占用2字节)。 3. 按功能,分为节点流(直接与数据源或目的地交互)和处理流(用于增强节点流的功能,如缓冲、过滤等)。对象流、缓冲流、压缩流、文件流等都是节点流和处理流的子分类。 三、流分类的关系 所有Java I/O流的基础可以归结为四个核心类: - 字节流:InputStream和OutputStream,分别代表输入流和输出流。 - 字符流:Reader和Writer,同样对应输入和输出。 四、字节流与字符流转换 1. 字节流转字符流:可以使用InputStreamReader将字节流转换为字符流,它需要一个字符集编码作为参数。 2. 字符流转字节流:先从字符流中读取字符数组,转化为String,再利用String的getBytes()方法获取字节数组,最后通过ByteArrayInputStream或ByteArrayOutputStream实现字节流的转换。 五、字节流与文件操作 字节流是最基础的流类型,适用于文件操作和网络数据传输。例如,FileInputStream和FileOutputStream是直接操作文件的节点流,而BufferedInputStream和BufferedOutputStream则提供了缓冲功能,提高效率。 六、字符流与字符编码 字符流处理字符数据时需要考虑字符编码,Reader和Writer在处理时通常会涉及到字符集,如ASCII、UTF-8等。 七、过滤流和装饰器模式 处理流(过滤流)遵循装饰器模式,可以附加在节点流之上,增加新的功能而不改变原有接口。例如,BufferedReader和BufferedWriter提供缓冲功能,FilterInputStream和FilterOutputStream用于实现更复杂的流操作。 Java I/O API提供了丰富的类和方法,开发者可以通过查阅官方文档快速掌握并应用到实际项目中。理解流的分类和转换机制是掌握Java I/O系统的关键,对于进行高效的数据读写和网络通信至关重要。