java 中 IO 流分为几种?

本文详细介绍了Java中IO流的概念及分类,包括输入流与输出流、字节流与字符流、节点流与处理流的区别与联系。同时,还介绍了Java Io流的40多个类是如何从4个抽象类基类派生而来。

面试题汇总

java 中 IO 流分为几种?

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

字节流:二进制,可以处理一切文件,包括:纯文本、doc、音频、视频等。
字符流:文本文件,只能处理纯文本。
节点流:包裹源头。
处理流:增强功能,提高性能。

Java Io流共涉及40多个类,这些类看上去很杂乱,但实际上很有规则,而且彼此之间存在非常紧密的联系, Java IO流的40多个类都是从如下4个抽象类基类中派生出来的。

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

按操作方式分类结构图:

在这里插入图片描述

按操作对象分类结构图:
在这里插入图片描述

Java 中,**IO (Input/Output Stream)** 主要可以按照以下两个维度进行分: --- ### 一、按数据传输方向(向)分为: 1. **输入(InputStream / Reader)**:从外部设备或文件读取数据到程序中。 2. **输出(OutputStream / Writer)**:将程序中的数据写入到外部设备或文件中。 --- ### 二、按操作的数据单位分为: 1. **字节(Byte Stream)**: - 以字节为单位进行读写(8位),适用于所有型文件(如图片、音频、视频等)。 - 基:`InputStream` 和 `OutputStream` 2. **字符(Character Stream)**: - 以字符为单位进行读写(16位 Unicode 字符),适用于文本文件。 - 基:`Reader` 和 `Writer` --- ### 三、常见 IO 总结 | 型 | 输入 | 输出 | |--------------|------------------------|---------------------------| | 字节 | InputStream | OutputStream | | 常用子 | FileInputStream | FileOutputStream | | | BufferedInputStream | BufferedOutputStream | | 字符 | Reader | Writer | | 常用子 | FileReader / BufferedReader | FileWriter / BufferedWriter | --- ### 四、其他扩展分: - **对象**:用于序列化和反序列化对象,如 `ObjectInputStream`、`ObjectOutputStream` - **缓冲**:提高读写效率,如 `BufferedInputStream`、`BufferedReader` - **转换**:连接字节与字符,如 `InputStreamReader`、`OutputStreamWriter` - **打印**:方便输出内容,如 `PrintStream`、`PrintWriter` --- ### 示例代码片段: ```java // 使用字节复制文件 FileInputStream fis = new FileInputStream("input.txt"); FileOutputStream fos = new FileOutputStream("output.txt"); int data; while ((data = fis.read()) != -1) { fos.write(data); } ``` ```java // 使用字符读取文本文件 BufferedReader br = new BufferedReader(new FileReader("input.txt")); String line; while ((line = br.readLine()) != null) { System.out.println(line); } ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值