在 Java 开发中,IO 流是处理数据输入输出的关键技术,广泛应用于文件读写、网络通信等场景。本文将深入讲解 Java IO 流的核心概念、分类、常用类及实战案例,带你全面掌握 IO 流的精髓,助力你在项目开发中游刃有余。
一、IO 流概述
1.1 什么是 IO 流
IO(Input/Output)即输入和输出,是指程序与外部设备(如硬盘、键盘、显示器等)进行数据交互的过程。在 Java 中,IO 流被抽象为流对象,通过这些流对象可以方便地实现数据的读取和写入操作。例如,从文件中读取文本内容、将数据写入数据库等操作都可以通过 IO 流来完成。
1.2 IO 流的分类
Java IO 流主要从两个角度进行分类:数据流向和数据类型。
-
按数据流向分类 :分为输入流和输出流。
-
输入流(Input Stream) :用于从数据源(如文件、网络等)读取数据。
-
输出流(Output Stream) :用于将数据写入目标(如文件、网络等)。
-
-
按数据类型分类 :分为字符流和字节流。
-
字符流(Character Stream) :用于处理文本数据,以字符为单位进行读写操作。常见的字符流类有
Reader
和Writer
及其子类。 -
字节流(Byte Stream) :用于处理二进制数据,以字节为单位进行读写操作。常见的字节流类有
InputStream
和OutputStream
及其子类。
-
二、字符流核心技术
2.1 字符输入流(Reader)
Reader
是所有字符输入流的抽象基类,其常用实现类有 FileReader
和 BufferedReader
。
-
FileReader :用于从文件中读取字符数据。例如,读取一个文本文件的内容:
import java.io.FileReader;
import java.io.IOException;
public class FileReaderExample {
public static void main(String[] args) {
try (FileReader reader = new FileReader("input.txt")) {
int data;
while ((data = reader.read()) != -1) { // 逐个字符读取
System.out.print((char) data);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
-
BufferedReader :提供缓冲功能,提高读取效率,支持按行读取。例如:
import java.io.BufferedReader;
import java.