

在Java中,I/O(输入/输出)流用于处理与输入和输出相关的操作。Java的I/O流按照数据处理的不同方式分为两大类:字节流和字符流。每个类别又分为输入流和输出流。以下是Java中常用的I/O流及其继承关系:
字节流(Byte Streams)
输入流(Input Streams)
-
InputStream(抽象类):所有字节输入流的父类
FileInputStream:用于从文件读取字节数据ByteArrayInputStream:从字节数组读取数据FilterInputStream(抽象类):所有过滤输入流的父类BufferedInputStream:提供缓冲功能,减少读取磁盘的次数DataInputStream:读取基本数据类型的输入流ObjectInputStream:读取对象的输入流
-
Reader(抽象类,用于字符流的基类):所有字符输入流的父类
FileReader:从文件读取字符数据CharArrayReader:从字符数组读取数据StringReader:从字符串读取数据FilterReader(抽象类):所有过滤字符输入流的父类BufferedReader:提供缓冲功能,减少读取磁盘的次数LineNumberReader:读取行号的输入流PushbackReader:可以推回字符的输入流
输出流(Output Streams)
-
OutputStream(抽象类):所有字节输出流的父类
FileOutputStream:用于向文件写入字节数据ByteArrayOutputStream:向字节数组写入数据FilterOutputStream(抽象类):所有过滤输出流的父类BufferedOutputStream:提供缓冲功能,减少写入磁盘的次数DataOutputStream:写入基本数据类型的输出流ObjectOutputStream:写入对象的输出流
-
Writer(抽象类,用于字符流的基类):所有字符输出流的父类
FileWriter:向文件写入字符数据CharArrayWriter:向字符数组写入数据StringWriter:向字符串写入数据FilterWriter(抽象类):所有过滤字符输出流的父类BufferedWriter:提供缓冲功能,减少写入磁盘的次数PrintWriter:提供打印功能,可以方便地打印各种数据类型的文本表示





初始化和使用
对于输入流和输出流,通常需要使用try-with-resources语句,以确保资源被正确关闭。以下是一些简单的初始化和使用示例:
字节流的使用
// 字节输入流
try (InputStream inputStream = new FileInputStream("example.txt")) {int data;while ((data = inputStream.read()) != -1) {// 处理字节数据}
} catch (IOException e) {e.printStackTrace();
}// 字节输出流
try (OutputStream outputStream = new FileOutputStream("output.txt")) {byte[] data = "Hello, World!".getBytes();outputStream.write(data);
} catch (IOException e) {e.printStackTrace();
}
字符流的使用
// 字符输入流
try (Reader reader = new FileReader("example.txt")) {int data;while ((data = reader.read()) != -1) {// 处理字符数据}
} catch (IOException e) {e.printStackTrace();
}// 字符输出流
try (Writer writer = new FileWriter("output.txt")) {String data = "Hello, World!";writer.write(data);
} catch (IOException e) {e.printStackTrace();
}
| 如果想要更详细的介绍,请跳转到本人的另一个博客:黑马程序员Java零基础视频教程_下部(P52-P134)🔗https://blog.csdn.net/weixin_46225503/article/details/130302411 |