一、 Java IO (Blocking IO)
-
基本概念:
- Java IO 是 Java 平台提供的用于进行输入和输出操作的 API。
- Java IO 基于 流 (Stream) 的模型,数据像水流一样从一个地方流向另一个地方。
- Java IO 主要是 阻塞式 I/O (Blocking I/O),即线程在执行 I/O 操作时会被阻塞,直到操作完成。
- 传统IO指的是
java.io包下的部分组件(File, InputStream, OutputStream, Reader, Writer)。
-
IO 流的分类:
-
按数据传输方向:
- 输入流 (Input Stream): 用于从数据源读取数据(例如,从文件、网络连接、键盘等)。 以
InputStream或Reader作为基类。 - 输出流 (Output Stream): 用于将数据写入到目标(例如,写入到文件、网络连接、控制台等)。 以
OutputStream或Writer作为基类。
- 输入流 (Input Stream): 用于从数据源读取数据(例如,从文件、网络连接、键盘等)。 以
-
按数据传输单位:
- 字节流 (Byte Stream): 以字节 (8 bits) 为单位进行数据传输。 以
InputStream和OutputStream作为基类。 适用于处理二进制数据(例如,图片、音频、视频等)。 - 字符流 (Character Stream): 以字符 (16 bits) 为单位进行数据传输。 以
Reader和Writer作为基类。 适用于处理文本数据。
- 字节流 (Byte Stream): 以字节 (8 bits) 为单位进行数据传输。 以
-
-
核心类和接口:
-
InputStream(字节输入流):FileInputStream: 从文件中读取字节。ByteArrayInputStream: 从字节数组中读取字节。ObjectInputStream: 从对象流中读取对象。BufferedInputStream: 带缓冲的字节输入流,提高读取效率。
-
OutputStream(字节输出流):FileOutputStream: 向文件中写入字节。ByteArrayOutputStream: 向字节数组中写入字节。ObjectOutputStream: 向对象流中写入对象。BufferedOutputStream: 带缓冲的字节输出流,提高写入效率。
-
Reader(字符输入流):FileReader: 从文件中读取字符。CharArrayReader: 从字符数组中读取字符。BufferedReader: 带缓冲的字符输入流,提高读取效率。InputStreamReader: 将字节输入流转换为字符输入流(需要指定字符编码)。
-
Writer(字符输出流):FileWriter: 向文件中写入字符。CharArrayWriter: 向字符数组中写入字符。BufferedWriter: 带缓冲的字符输出流,提高写入效率。OutputStreamWriter: 将字节输出流转换为字符输出流(需要指定字符编码)。
-
File: 表示文件或目录的抽象表示。
-
-
IO 操作流程 (以读取文件为例):
- 创建
File对象: 指定要读取的文件路径。 - 创建
FileInputStream对象: 将File对象作为参数传递给FileInputStream的构造方法,创建一个FileInputStream对象。 - 创建
BufferedInputStream对象 (可选): 将FileInputStream对象作为参数传递给BufferedInputStream的构造方法,创建一个BufferedInputStream对象,提高读取效率。 - 读取数据: 使用
read()方法从输入流中读取数据。 - 关闭流: 在完成读取操作后,务必关闭输入流,释放资源(先关闭
BufferedInputStream,再关闭FileInputStream)。
- 创建
-
代码示例 (读取文件内容):
import java.io.BufferedInputStream; import java.io.File

最低0.47元/天 解锁文章
6431

被折叠的 条评论
为什么被折叠?



