Java中的IO流
2024-01-09 23:37:05
在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 |
文章来源:https://blog.csdn.net/weixin_46225503/article/details/135490897
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!