在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 |